diff --git a/curriculum/challenges/arabic/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md b/curriculum/challenges/arabic/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md index 7f58922a19c..32b0fd2817b 100644 --- a/curriculum/challenges/arabic/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md +++ b/curriculum/challenges/arabic/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md @@ -26,7 +26,7 @@ Here's an example: # --instructions-- -حان الوقت لأخذ استراحة من Camper Cat و مقابلة الزميل camper Zersiax (@zersiax), بطل ال accessibility و مستخدم لتقنية قارئ الشاشة (screen reader). To hear a clip of his screen reader in action, add an `audio` element after the `p` element. Include the `controls` attribute. Then place a `source` element inside the `audio` tags with the `src` attribute set to `https://s3.amazonaws.com/freecodecamp/screen-reader.mp3` and `type` attribute set to `"audio/mpeg"`. +حان الوقت لأخذ استراحة من Camper Cat و مقابلة الزميل camper Zersiax (@zersiax), بطل ال accessibility و مستخدم لتقنية قارئ الشاشة (screen reader). To hear a clip of his screen reader in action, add an `audio` element after the `p` element. Include the `controls` attribute. Then place a `source` element inside the `audio` tags with the `src` attribute set to `https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3` and `type` attribute set to `"audio/mpeg"`. **Note:** The audio clip may sound fast and be difficult to understand, but that is a normal speed for screen reader users. @@ -70,7 +70,7 @@ The value for the `src` attribute on the `source` tag should match the link in t ```js assert( $('source').attr('src') === - 'https://s3.amazonaws.com/freecodecamp/screen-reader.mp3' + 'https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3' ); ``` @@ -108,7 +108,7 @@ assert($('source').attr('type') === 'audio/mpeg');

A sound clip of Zersiax's screen reader in action.

diff --git a/curriculum/challenges/arabic/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md b/curriculum/challenges/arabic/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md index 6e1ab117d66..9180092a3a5 100644 --- a/curriculum/challenges/arabic/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md +++ b/curriculum/challenges/arabic/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md @@ -93,7 +93,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -186,7 +186,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/arabic/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md b/curriculum/challenges/arabic/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md index d87e9c77813..e5a120702f8 100644 --- a/curriculum/challenges/arabic/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md +++ b/curriculum/challenges/arabic/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md @@ -102,7 +102,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -198,7 +198,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/arabic/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md b/curriculum/challenges/arabic/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md index 4aedd8ed61d..9621ae04434 100644 --- a/curriculum/challenges/arabic/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md +++ b/curriculum/challenges/arabic/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md @@ -95,7 +95,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -190,7 +190,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/arabic/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md b/curriculum/challenges/arabic/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md index b20ab078776..08464a008bd 100644 --- a/curriculum/challenges/arabic/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md +++ b/curriculum/challenges/arabic/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md @@ -98,7 +98,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -192,7 +192,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md new file mode 100644 index 00000000000..47a2bcd6988 --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md @@ -0,0 +1,887 @@ +--- +id: 5e44413e903586ffb414c94e +title: Build a Budget App Project +challengeType: 23 +forumTopicId: 462361 +dashedName: build-a-budget-app-project +--- + +# --description-- + +Complete the `Category` class. It should be able to instantiate objects based on different budget categories like *food*, *clothing*, and *entertainment*. When objects are created, they are passed in the name of the category. The class should have an instance variable called `ledger` that is a list. The class should also contain the following methods: + +- A `deposit` method that accepts an amount and description. If no description is given, it should default to an empty string. The method should append an object to the ledger list in the form of `{"amount": amount, "description": description}`. +- A `withdraw` method that is similar to the `deposit` method, but the amount passed in should be stored in the ledger as a negative number. If there are not enough funds, nothing should be added to the ledger. This method should return `True` if the withdrawal took place, and `False` otherwise. +- A `get_balance` method that returns the current balance of the budget category based on the deposits and withdrawals that have occurred. +- A `transfer` method that accepts an amount and another budget category as arguments. The method should add a withdrawal with the amount and the description "Transfer to [Destination Budget Category]". The method should then add a deposit to the other budget category with the amount and the description "Transfer from [Source Budget Category]". If there are not enough funds, nothing should be added to either ledgers. This method should return `True` if the transfer took place, and `False` otherwise. +- A `check_funds` method that accepts an amount as an argument. It returns `False` if the amount is greater than the balance of the budget category and returns `True` otherwise. This method should be used by both the `withdraw` method and `transfer` method. + +When the budget object is printed it should display: + +- A title line of 30 characters where the name of the category is centered in a line of `*` characters. +- A list of the items in the ledger. Each line should show the description and amount. The first 23 characters of the description should be displayed, then the amount. The amount should be right aligned, contain two decimal places, and display a maximum of 7 characters. +- A line displaying the category total. + +Here is an example usage: + +```py +food = Category("Food") +food.deposit(1000, "deposit") +food.withdraw(10.15, "groceries") +food.withdraw(15.89, "restaurant and more food for dessert") +clothing = Category("Clothing") +food.transfer(50, clothing) +print(food) +``` + +And here is an example of the output: + +```bash +*************Food************* +initial deposit 1000.00 +groceries -10.15 +restaurant and more foo -15.89 +Transfer to Clothing -50.00 +Total: 923.96 +``` + +Besides the `Category` class, create a function (outside of the class) called `create_spend_chart` that takes a list of categories as an argument. It should return a string that is a bar chart. + +The chart should show the percentage spent in each category passed in to the function. The percentage spent should be calculated only with withdrawals and not with deposits. Down the left side of the chart should be labels 0 - 100. The "bars" in the bar chart should be made out of the "o" character. The height of each bar should be rounded down to the nearest 10. The horizontal line below the bars should go two spaces past the final bar. Each category name should be written vertically below the bar. There should be a title at the top that says "Percentage spent by category". + +This function will be tested with up to four categories. + +Look at the example output below very closely and make sure the spacing of the output matches the example exactly. + +```bash +Percentage spent by category +100| + 90| + 80| + 70| + 60| o + 50| o + 40| o + 30| o + 20| o o + 10| o o o + 0| o o o + ---------- + F C A + o l u + o o t + d t o + h + i + n + g +``` + +# --hints-- + +The `deposit` method should create a specific object in the ledger instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit(self): + self.food.deposit(900, "deposit") + actual = self.food.ledger[0] + expected = {"amount": 900, "description": "deposit"} + self.assertEqual(actual, expected, 'Expected "deposit" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `deposit` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit_no_description(self): + self.food.deposit(45.56) + actual = self.food.ledger[0] + expected = {"amount": 45.56, "description": ""} + self.assertEqual(actual, expected, 'Expected calling "deposit" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should create a specific object in the `ledger` instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": "milk, cereal, eggs, bacon, bread"} + self.assertEqual(actual, expected, 'Expected "withdraw" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `withdraw` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": ""} + self.assertEqual(actual, expected, 'Expected "withdraw" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `True` if the withdrawal took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + self.assertEqual(good_withdraw, True, 'Expected "withdraw" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `food.deposit(900, "deposit")` and `food.withdraw(45.67, "milk, cereal, eggs, bacon, bread")` should return a balance of `854.33`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_get_balance(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.get_balance() + expected = 854.33 + self.assertEqual(actual, expected, 'Expected balance to be 854.33') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `transfer` method on a category object should create a specific ledger item in that category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.food.ledger[2] + expected = {"amount": -transfer_amount, "description": "Transfer to Entertainment"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `True` if the transfer took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + self.assertEqual(good_transfer, True, 'Expected "transfer" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `transfer` on a category object should reduce the balance in the category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + food_balance_before = self.food.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + food_balance_after = self.food.get_balance() + self.assertEqual(food_balance_before - food_balance_after, transfer_amount, 'Expected "transfer" method to reduce balance in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should increase the balance of the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + entertainment_balance_before = self.entertainment.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + entertainment_balance_after = self.entertainment.get_balance() + self.assertEqual(entertainment_balance_after - entertainment_balance_before, transfer_amount, 'Expected "transfer" method to increase balance in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should create a specific ledger item in the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.entertainment.ledger[0] + expected = {"amount": transfer_amount, "description": "Transfer from Food"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `False` if the amount passed to the method is greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(20) + expected = False + self.assertEqual(actual, expected, 'Expected "check_funds" method to be False') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `True` if the amount passed to the method is not greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(10) + expected = True + self.assertEqual(actual, expected, 'Expected "check_funds" method to be True') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `False` if the withdrawal didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_funds(self): + self.food.deposit(100, "deposit") + good_withdraw = self.food.withdraw(100.10) + self.assertEqual(good_withdraw, False, 'Expected "withdraw" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `False` if the transfer didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer_no_funds(self): + self.food.deposit(100, "deposit") + good_transfer = self.food.transfer(200, self.entertainment) + self.assertEqual(good_transfer, False, 'Expected "transfer" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Printing a `Category` instance should give a different string representation of the object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_to_string(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + self.food.transfer(20, self.entertainment) + actual = str(self.food) + expected = "*************Food*************\\ndeposit 900.00\\nmilk, cereal, eggs, bac -45.67\\nTransfer to Entertainme -20.00\\nTotal: 834.33" + self.assertEqual(actual, expected, 'Expected different string representation of object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +` + const out = runPython(testCode); + assert(out); + } +}) +``` + +`create_spend_chart` should print a different chart representation. Check that all spacing is exact. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + self.business = budget.Category("Business") + + def test_create_spend_chart(self): + self.food.deposit(900, "deposit") + self.entertainment.deposit(900, "deposit") + self.business.deposit(900, "deposit") + self.food.withdraw(105.55) + self.entertainment.withdraw(33.40) + self.business.withdraw(10.99) + actual = budget.create_spend_chart([self.business, self.food, self.entertainment]) + expected = "Percentage spent by category\\n100| \\n 90| \\n 80| \\n 70| o \\n 60| o \\n 50| o \\n 40| o \\n 30| o \\n 20| o o \\n 10| o o \\n 0| o o o \\n ----------\\n B F E \\n u o n \\n s o t \\n i d e \\n n r \\n e t \\n s a \\n s i \\n n \\n m \\n e \\n n \\n t " + self.assertEqual(actual, expected, 'Expected different chart representation. Check that all spacing is exact.') +`); + + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Category: + pass + +def create_spend_chart(categories): + pass +``` + +# --solutions-- + +```py +class Category: + + def __init__(self, name): + self.name = name + self.ledger = [] + self.balance = 0 + self.spent = 0 + + def __str__(self): + first_line = f'{self.name.center(30, "*")}\n' + lines = '' + total = f'Total: {format(self.balance, ".2f")}' + + for n in range(len(self.ledger)): + descr = self.ledger[n]["description"][:23] + am = format(float(self.ledger[n]["amount"]), ".2f")[:7] + lines = lines + f'{descr:<23}{am:>7}\n' + + return f'{first_line}{lines}{total}' + + def deposit(self, amount, description=''): + self.ledger.append({ + 'amount': float(amount), + 'description': description + }) + self.balance = self.balance + float(amount) + + def withdraw(self, amount, description=''): + if self.check_funds(amount): + self.ledger.append({ + 'amount': -float(amount), + 'description': description + }) + self.balance = self.balance - float(amount) + self.spent = self.spent + float(amount) + return True + else: + return False + + def get_balance(self): + return self.balance + + def transfer(self, amount, category): + if self.check_funds(amount): + # withdraw + self.ledger.append({ + 'amount': -float(amount), + 'description': f'Transfer to {category.name}' + }) + self.balance = self.balance - float(amount) + # deposit + category.deposit(amount, f'Transfer from {self.name}') + + return True + else: + return False + + def check_funds(self, amount): + if float(amount) > self.balance: + return False + else: + return True + + +def create_spend_chart(categories): + total_expenses = 0 + obj = {} + col1 = [] + str = [] + final_str = 'Percentage spent by category\n' + label_max_length = 0 + label_strings = [] + + for category in categories: + total_expenses = total_expenses + category.spent + obj[category.name] = {'expenses': category.spent} + obj[category.name]['label'] = list(category.name) + if len(obj[category.name]['label']) > label_max_length: + label_max_length = len(obj[category.name]['label']) + + for category in categories: + obj[category.name]['percent'] = ( + (category.spent / total_expenses * 100) // 10) * 10 + obj[category.name]['column'] = [] + for i in range(0, 110, 10): + if obj[category.name]['percent'] >= i: + obj[category.name]['column'].insert(0, 'o') + else: + obj[category.name]['column'].insert(0, ' ') + + for i in range(0, 110, 10): + col1.insert(0, i) + + for i in range(11): + str.append("") + for key in obj: + str[i] += (f'{obj[key]["column"][i]} ') + final_str += f'{col1[i]:>3}| {str[i]}\n' + final_str += f' {"-"*(1+3*len(obj))}\n ' + + for i in range(label_max_length): + label_strings.append(' ') + for k in obj: + if len(obj[k]['label']) < label_max_length: + obj[k]['label'].extend( + f'{" "*(label_max_length-len(obj[k]["label"]))}') + + label_strings[i] += f'{obj[k]["label"][i]} ' + if i < label_max_length - 1: + label_strings[i] += '\n ' + final_str += label_strings[i] + + print(final_str) + return (final_str) + +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md new file mode 100644 index 00000000000..ef719adc3a7 --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md @@ -0,0 +1,869 @@ +--- +id: 5e444147903586ffb414c94f +title: Build a Polygon Area Calculator Project +challengeType: 23 +forumTopicId: 462363 +dashedName: build-a-polygon-area-calculator-project +--- + +# --description-- + +In this project you will use object oriented programming to create a `Rectangle` class and a `Square` class. The `Square` class should be a subclass of `Rectangle`, and inherit its methods and attributes. + +## Rectangle class + +When a Rectangle object is created, it should be initialized with `width` and `height` attributes. The class should also contain the following methods: + +- `set_width` +- `set_height` +- `get_area`: Returns area (`width * height`) +- `get_perimeter`: Returns perimeter (`2 * width + 2 * height`) +- `get_diagonal`: Returns diagonal (`(width ** 2 + height ** 2) ** .5`) +- `get_picture`: Returns a string that represents the shape using lines of "\*". The number of lines should be equal to the height and the number of "\*" in each line should be equal to the width. There should be a new line (`\n`) at the end of each line. If the width or height is larger than 50, this should return the string: "Too big for picture.". +- `get_amount_inside`: Takes another shape (square or rectangle) as an argument. Returns the number of times the passed in shape could fit inside the shape (with no rotations). For instance, a rectangle with a width of 4 and a height of 8 could fit in two squares with sides of 4. + +Additionally, if an instance of a `Rectangle` is represented as a string, it should look like: `Rectangle(width=5, height=10)` + +## Square class + +The `Square` class should be a subclass of `Rectangle`. When a `Square` object is created, a single side length is passed in. The `__init__` method should store the side length in both the `width` and `height` attributes from the `Rectangle` class. + +The `Square` class should be able to access the `Rectangle` class methods but should also contain a `set_side` method. If an instance of a `Square` is represented as a string, it should look like: `Square(side=9)` + +Additionally, the `set_width` and `set_height` methods on the `Square` class should set both the width and height. + +## Usage example + +```py +rect = Rectangle(10, 5) +print(rect.get_area()) +rect.set_height(3) +print(rect.get_perimeter()) +print(rect) +print(rect.get_picture()) + +sq = Square(9) +print(sq.get_area()) +sq.set_side(4) +print(sq.get_diagonal()) +print(sq) +print(sq.get_picture()) + +rect.set_height(8) +rect.set_width(16) +print(rect.get_amount_inside(sq)) +``` + +That code should return: + +```bash +50 +26 +Rectangle(width=10, height=3) +********** +********** +********** + +81 +5.656854249492381 +Square(side=4) +**** +**** +**** +**** + +8 +``` + +# --hints-- + +The `Square` class should be a subclass of the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_subclass(self): + actual = issubclass(shape_calculator.Square, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a subclass of the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `Square` class should be a distinct class from the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_distinct_classes(self): + actual = shape_calculator.Square is not shape_calculator.Rectangle + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a distinct class from the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +A square object should be an instance of the `Square` class and the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_is_square_and_rectangle(self): + actual = isinstance(self.sq, shape_calculator.Square) and isinstance(self.sq, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected square object to be an instance of the Square class and the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Rectangle(3, 6)` should be `Rectangle(width=3, height=6)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_string(self): + actual = str(self.rect) + expected = "Rectangle(width=3, height=6)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle to be "Rectangle(width=3, height=6)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Square(5)` should be `Square(side=5)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_string(self): + actual = str(self.sq) + expected = "Square(side=5)" + self.assertEqual(actual, expected, 'Expected string representation of square to be "Square(side=5)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_area()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_area(self): + actual = self.rect.get_area() + expected = 18 + self.assertEqual(actual, expected, 'Expected area of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_area()` should return `25`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_area(self): + actual = self.sq.get_area() + expected = 25 + self.assertEqual(actual, expected, 'Expected area of square to be 25') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_perimeter()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_perimeter(self): + actual = self.rect.get_perimeter() + expected = 18 + self.assertEqual(actual, expected, 'Expected perimeter of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_perimeter()` should return `20`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_perimeter(self): + actual = self.sq.get_perimeter() + expected = 20 + self.assertEqual(actual, expected, 'Expected perimeter of square to be 20') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_diagonal()` should return `6.708203932499369`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_diagonal(self): + actual = self.rect.get_diagonal() + expected = 6.708203932499369 + self.assertEqual(actual, expected, 'Expected diagonal of rectangle to be 6.708203932499369') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_diagonal()` should return `7.0710678118654755`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_diagonal(self): + actual = self.sq.get_diagonal() + expected = 7.0710678118654755 + self.assertEqual(actual, expected, 'Expected diagonal of square to be 7.0710678118654755') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Rectangle` class should have a different string representation after setting new values. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_set_attributes(self): + self.rect.set_width(7) + self.rect.set_height(8) + actual = str(self.rect) + expected = "Rectangle(width=7, height=8)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle after setting new values to be "Rectangle(width=7, height=8)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_side()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_side(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_width()` or `set_height()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_height(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') + self.sq.set_width(4) + actual = str(self.sq) + expected = "Square(side=4)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting width to be "Square(side=4)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Rectangle` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_picture(self): + self.rect.set_width(7) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "*******\\n*******\\n*******\\n" + self.assertEqual(actual, expected, 'Expected rectangle picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Square` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_picture(self): + self.sq.set_side(2) + actual = self.sq.get_picture() + expected = "**\\n**\\n" + self.assertEqual(actual, expected, 'Expected square picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return the string `Too big for picture.` if the `width` or `height` attributes are larger than `50`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_big_picture(self): + self.rect.set_width(51) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "Too big for picture." + self.assertEqual(actual, expected, 'Expected message: "Too big for picture."') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(15,10).get_amount_inside(Square(5))` should return `6`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + self.sq = shape_calculator.Square(5) + + def test_get_amount_inside(self): + self.rect.set_height(10) + self.rect.set_width(15) + actual = self.rect.get_amount_inside(self.sq) + expected = 6 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 6.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(4,8).get_amount_inside(Rectangle(3, 6))` should return `1`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_two_rectangles(self): + rect2 = shape_calculator.Rectangle(4, 8) + actual = rect2.get_amount_inside(self.rect) + expected = 1 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 1.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(2,3).get_amount_inside(Rectangle(3, 6))` should return `0`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_none(self): + rect2 = shape_calculator.Rectangle(2, 3) + actual = rect2.get_amount_inside(self.rect) + expected = 0 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 0.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Rectangle: + pass + +class Square: + pass +``` + +# --solutions-- + +```py +class Rectangle: + def __init__(self, width, height): + self.width = width + self.height = height + + def __str__(self): + return f'Rectangle(width={self.width}, height={self.height})' + + def set_width(self, width): + self.width = width + + def set_height(self, height): + self.height = height + + def get_area(self): + area = self.width * self.height + return area + + def get_perimeter(self): + perimeter = self.width * 2 + self.height * 2 + return perimeter + + def get_diagonal(self): + diagonal = (self.width ** 2 + self.height ** 2) ** 0.5 + return diagonal + + def get_picture(self): + if self.width < 50 and self.height < 50: + picture = f'{"*"*self.width}\n'*self.height + return picture + else: + return 'Too big for picture.' + + def get_amount_inside(self, polygon): + h_number = self.height // polygon.height + w_number = self.width // polygon.width + repetition = h_number * w_number + return repetition + + +class Square(Rectangle): + def __init__(self, side): + self.width = side + self.height = side + + def __str__(self): + return f'Square(side={self.width})' + + def set_width(self, side): + self.width = side + self.height = side + + def set_height(self, side): + self.height = side + self.width = side + + def set_side(self,side): + self.width = side + self.height = side + +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md new file mode 100644 index 00000000000..94cf5c682de --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md @@ -0,0 +1,300 @@ +--- +id: 5e44414f903586ffb414c950 +title: Build a Probability Calculator Project +challengeType: 23 +forumTopicId: 462364 +dashedName: build-a-probability-calculator-project +--- + +# --description-- + +Suppose there is a hat containing 5 blue balls, 4 red balls, and 2 green balls. What is the probability that a random draw of 4 balls will contain at least 1 red ball and 2 green balls? While it would be possible to calculate the probability using advanced mathematics, an easier way is to write a program to perform a large number of experiments to estimate an approximate probability. + +For this project, you will write a program to determine the approximate probability of drawing certain balls randomly from a hat. + +First, create a `Hat` class in `main.py`. The class should take a variable number of arguments that specify the number of balls of each color that are in the hat. For example, a class object could be created in any of these ways: + +```py +hat1 = Hat(yellow=3, blue=2, green=6) +hat2 = Hat(red=5, orange=4) +hat3 = Hat(red=5, orange=4, black=1, blue=0, pink=2, striped=9) +``` + +A hat will always be created with at least one ball. The arguments passed into the hat object upon creation should be converted to a `contents` instance variable. `contents` should be a list of strings containing one item for each ball in the hat. Each item in the list should be a color name representing a single ball of that color. For example, if your hat is `{"red": 2, "blue": 1}`, `contents` should be `["red", "red", "blue"]`. + +The `Hat` class should have a `draw` method that accepts an argument indicating the number of balls to draw from the hat. This method should remove balls at random from `contents` and return those balls as a list of strings. The balls should not go back into the hat during the draw, similar to an urn experiment without replacement. If the number of balls to draw exceeds the available quantity, return all the balls. + +Next, create an `experiment` function in `main.py` (not inside the `Hat` class). This function should accept the following arguments: + +- `hat`: A hat object containing balls that should be copied inside the function. +- `expected_balls`: An object indicating the exact group of balls to attempt to draw from the hat for the experiment. For example, to determine the probability of drawing 2 blue balls and 1 red ball from the hat, set `expected_balls` to `{"blue":2, "red":1}`. +- `num_balls_drawn`: The number of balls to draw out of the hat in each experiment. +- `num_experiments`: The number of experiments to perform. (The more experiments performed, the more accurate the approximate probability will be.) + +The `experiment` function should return a probability. + +For example, if you want to determine the probability of getting at least two red balls and one green ball when you draw five balls from a hat containing six black, four red, and three green. To do this, you will perform `N` experiments, count how many times `M` you get at least two red balls and one green ball, and estimate the probability as `M/N`. Each experiment consists of starting with a hat containing the specified balls, drawing several balls, and checking if you got the balls you were attempting to draw. + +Here is how you would call the `experiment` function based on the example above with 2000 experiments: + +```py +hat = Hat(black=6, red=4, green=3) +probability = experiment(hat=hat, + expected_balls={"red":2,"green":1}, + num_balls_drawn=5, + num_experiments=2000) +``` + +The output would be something like this: + +```bash +0.356 +``` + +Since this is based on random draws, the probability will be slightly different each time the code is run. + +_Hint: Consider using the modules that are already imported at the top. Do not initialize random seed within the file._ + + +# --hints-- + +Creation of `hat` object should add correct contents. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_class_contents(self): + hat = probability_calculator.Hat(red=3,blue=2) + actual = hat.contents + expected = ["red","red","red","blue","blue"] + self.assertEqual(actual, expected, 'Expected creation of hat object to add correct contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method in `hat` class should reduce number of items in contents. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw(self): + hat = probability_calculator.Hat(red=5,blue=2) + actual = hat.draw(2) + expected = ['blue', 'red'] + self.assertEqual(actual, expected, 'Expected hat draw to return two random items from hat contents.') + actual = len(hat.contents) + expected = 5 + self.assertEqual(actual, expected, 'Expected hat draw to reduce number of items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method should behave correctly when the number of balls to extract is bigger than the number of balls in the hat. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw_2(self): + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + actual = hat.draw(20) + expected = ['yellow', 'yellow', 'yellow', 'yellow', 'yellow', 'red', 'green', 'green', 'green', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'test'] + self.assertEqual(actual, expected, 'Expected hat draw to return all items from hat contents.') + actual = len(hat.contents) + expected = 0 + self.assertEqual(actual, expected, 'Expected hat draw to leave no items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `experiment` method should return a different probability. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_prob_experiment(self): + hat = probability_calculator.Hat(blue=3,red=2,green=6) + probability = probability_calculator.experiment(hat=hat, expected_balls={"blue":2,"green":1}, num_balls_drawn=4, num_experiments=1000) + actual = probability + expected = 0.272 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + probability = probability_calculator.experiment(hat=hat, expected_balls={"yellow":2,"blue":3,"test":1}, num_balls_drawn=20, num_experiments=100) + actual = probability + expected = 1.0 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +# --seed-- + +## --seed-contents-- + +```py +import copy +import random + +class Hat: + pass + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + pass +``` + +# --solutions-- + +```py +import copy +import random + +class Hat: + def __init__(self, **hat): + self.hat = hat + contents = [] + for i in hat: + for j in range(hat[i]): + contents.append(i) + self.contents = contents + + + def draw(self, number): + drawn = [] + if number >= len(self.contents): + drawn.extend(self.contents) + self.contents = [] + else: + for i in range(number): + drawn.append( + self.contents.pop(random.randrange(len(self.contents))) + ) + return drawn + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + expected_balls_list = [] + drawn_list = [] + success = 0 + for i in expected_balls: + for j in range(expected_balls[i]): + expected_balls_list.append(i) + for j in range(num_experiments): + hat_copy = copy.deepcopy(hat) + drawn_list.append(hat_copy.draw(num_balls_drawn)) + exp_ball_list_copy = expected_balls_list[:] + for k in range(len(drawn_list[j])): + try: + ind = exp_ball_list_copy.index(drawn_list[j][k]) + exp_ball_list_copy.pop(ind) + except: + continue + if len(exp_ball_list_copy) == 0: + success += 1 + probability = success/num_experiments + return probability +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md new file mode 100644 index 00000000000..05e60f0b74a --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md @@ -0,0 +1,582 @@ +--- +id: 5e444136903586ffb414c94d +title: Build a Time Calculator Project +challengeType: 23 +forumTopicId: 462360 +dashedName: build-a-time-calculator-project +--- + +# --description-- + +Write a function named `add_time` that takes in two required parameters and one optional parameter: + +- a start time in the 12-hour clock format (ending in AM or PM) +- a duration time that indicates the number of hours and minutes +- (optional) a starting day of the week, case insensitive + +The function should add the duration time to the start time and return the result. + +If the result will be the next day, it should show `(next day)` after the time. If the result will be more than one day later, it should show `(n days later)` after the time, where "n" is the number of days later. + +If the function is given the optional starting day of the week parameter, then the output should display the day of the week of the result. The day of the week in the output should appear after the time and before the number of days later. + +Below are some examples of different cases the function should handle. Pay close attention to the spacing and punctuation of the results. + +```py +add_time('3:00 PM', '3:10') +# Returns: 6:10 PM + +add_time('11:30 AM', '2:32', 'Monday') +# Returns: 2:02 PM, Monday + +add_time('11:43 AM', '00:20') +# Returns: 12:03 PM + +add_time('10:10 PM', '3:30') +# Returns: 1:40 AM (next day) + +add_time('11:43 PM', '24:20', 'tueSday') +# Returns: 12:03 AM, Thursday (2 days later) + +add_time('6:30 PM', '205:12') +# Returns: 7:42 AM (9 days later) +``` + +Do not import any Python libraries. Assume that the start times are valid times. The minutes in the duration time will be a whole number less than 60, but the hour can be any whole number. + +# --hints-- +Calling `add_time('3:30 PM', '2:12')` should return `'5:42 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +import time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period(self): + actual = time_calculator.add_time("3:30 PM", "2:12") + expected = "5:42 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12" to return "5:42 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:55 AM', '3:12')` should return `'3:07 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_different_period(self): + actual = time_calculator.add_time("11:55 AM", "3:12") + expected = "3:07 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:55 AM", "3:12" to return "3:07 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected time to end with `'(next day)'` when it is the next day. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_next_day(self): + actual = time_calculator.add_time("9:15 PM", "5:30") + expected = "2:45 AM (next day)" + self.assertEqual(actual, expected, 'Expected time to end with "(next day)" when it is the next day.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected period to change from `AM` to `PM` at `12:00`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_period_change_at_twelve(self): + actual = time_calculator.add_time("11:40 AM", "0:25") + expected = "12:05 PM" + self.assertEqual(actual, expected, 'Expected period to change from AM to PM at 12:00') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00')` should return `'2:59 AM (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four(self): + actual = time_calculator.add_time("2:59 AM", "24:00") + expected = "2:59 AM (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00" to return "2:59 AM (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05')` should return `'12:04 AM (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later(self): + actual = time_calculator.add_time("11:59 PM", "24:05") + expected = "12:04 AM (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05" to return "12:04 AM (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02')` should return `'6:18 AM (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration(self): + actual = time_calculator.add_time("8:16 PM", "466:02") + expected = "6:18 AM (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02" to return "6:18 AM (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected adding `0:00` to return the initial time. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_no_change(self): + actual = time_calculator.add_time("5:01 AM", "0:00") + expected = "5:01 AM" + self.assertEqual(actual, expected, 'Expected adding 0:00 to return initial time.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('3:30 PM', '2:12', 'Monday')`should return `'5:42 PM, Monday'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period_with_day(self): + actual = time_calculator.add_time("3:30 PM", "2:12", "Monday") + expected = "5:42 PM, Monday" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12", "Monday" to return "5:42 PM, Monday"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00', 'saturDay')` should return `'2:59 AM, Sunday (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four_with_day(self): + actual = time_calculator.add_time("2:59 AM", "24:00", "saturDay") + expected = "2:59 AM, Sunday (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00", "saturDay" to return "2:59 AM, Sunday (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05', 'Wednesday')` should return `'12:04 AM, Friday (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later_with_day(self): + actual = time_calculator.add_time("11:59 PM", "24:05", "Wednesday") + expected = "12:04 AM, Friday (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05", "Wednesday" to return "12:04 AM, Friday (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02', 'tuesday')`should return `'6:18 AM, Monday (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration_with_day(self): + actual = time_calculator.add_time("8:16 PM", "466:02", "tuesday") + expected = "6:18 AM, Monday (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02", "tuesday" to return "6:18 AM, Monday (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def add_time(start, duration): + + + + + + return new_time +``` + +# --solutions-- + +```py +def add_time(start, duration, day=''): + start_arr = start[0:-3].split(':') + dur_arr = duration.split(':') + tail = '' + # converting to 24h format + if 'AM' in start: + if start_arr[0] == '12': + start_arr[0] = '00' + elif 'PM' in start: + if start_arr[0] == '12': + start_arr[0] = '12' + else: + start_arr[0] = f'{int(start_arr[0]) + 12}' + + # adding minutes + sum_m = int(start_arr[1]) + int(dur_arr[1]) + if sum_m > 59: + + if (sum_m - 60 * (sum_m//60)) < 10: + mins = f'0{(sum_m - 60 * (sum_m//60))}' + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + + else: + mins = sum_m - 60 * (sum_m//60) + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + else: + if sum_m < 10: + mins = f'0{sum_m}' + else: + mins = sum_m + + #adding hours + sum_h = int(start_arr[0]) + int(dur_arr[0]) + if sum_h < 24: + hours= sum_h + #time_24 = f'{hours}:{mins}' + else: + days_after = sum_h//24 + if days_after == 1: + hours = sum_h - 24 + tail = ' (next day)' + else: + hours = sum_h - 24 * days_after + tail = f' ({days_after} days later)' + + #converting back to AM/PM + if hours == 0: + hours = 12 + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + elif hours < 12: + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + else: + if hours > 12: + hours = hours - 12 + time = f'{hours}:{mins} PM' + final_time = f'{time}{tail}' + + #days of the week + week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] + if day: + day = day.capitalize() + if not tail: + final_time = f'{time}, {day}' + elif tail == ' (next day)': + index = week.index(day) + 1 + if index == 7: + index = 0 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + elif tail: + index = (week.index(day) + days_after) % 7 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + + + print('\n') + print(final_time) + print('\n') + return final_time + +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md new file mode 100644 index 00000000000..4f112fd73c5 --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md @@ -0,0 +1,248 @@ +--- +id: 5e44412c903586ffb414c94c +title: Build an Arithmetic Formatter Project +challengeType: 23 +forumTopicId: 462359 +dashedName: build-an-arithmetic-formatter-project +--- + +# --description-- + +Students in primary school often arrange arithmetic problems vertically to make them easier to solve. For example, "235 + 52" becomes: + +```py + 235 ++ 52 +----- +``` + +Finish the `arithmetic_arranger` function that receives a list of strings which are arithmetic problems, and returns the problems arranged vertically and side-by-side. The function should optionally take a second argument. When the second argument is set to `True`, the answers should be displayed. + +## Example + +Function Call: + +```py +arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"]) +``` + +Output: + +```py + 32 3801 45 123 ++ 698 - 2 + 43 + 49 +----- ------ ---- ----- +``` + +Function Call: + +```py +arithmetic_arranger(["32 + 8", "1 - 3801", "9999 + 9999", "523 - 49"], True) +``` + +Output: + +```py + 32 1 9999 523 ++ 8 - 3801 + 9999 - 49 +---- ------ ------ ----- + 40 -3800 19998 474 +``` + +## Rules + +The function will return the correct conversion if the supplied problems are properly formatted, otherwise, it will **return** a **string** that describes an error that is meaningful to the user. + +- Situations that will return an error: + - If there are **too many problems** supplied to the function. The limit is **five**, anything more will return: `'Error: Too many problems.'` + - The appropriate operators the function will accept are **addition** and **subtraction**. Multiplication and division will return an error. Other operators not mentioned in this bullet point will not need to be tested. The error returned will be: `"Error: Operator must be '+' or '-'."` + - Each number (operand) should only contain digits. Otherwise, the function will return: `'Error: Numbers must only contain digits.'` + - Each operand (aka number on each side of the operator) has a max of four digits in width. Otherwise, the error string returned will be: `'Error: Numbers cannot be more than four digits.'` +- If the user supplied the correct format of problems, the conversion you return will follow these rules: + - There should be a single space between the operator and the longest of the two operands, the operator will be on the same line as the second operand, both operands will be in the same order as provided (the first will be the top one and the second will be the bottom). + - Numbers should be right-aligned. + - There should be four spaces between each problem. + - There should be dashes at the bottom of each problem. The dashes should run along the entire length of each problem individually. (The example above shows what this should look like.) + +# --hints-- + +`arithmetic_arranger(["3801 - 2", "123 + 49"])` should return `3801 123\n- 2 + 49\n------ -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3801 - 2", "123 + 49"]), ' 3801 123\\n- 2 + 49\\n------ -----')`); + } +}) +``` + +`arithmetic_arranger(["1 + 2", "1 - 9380"])` should return `1 1\n+ 2 - 9380\n--- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["1 + 2", "1 - 9380"]), ' 1 1\\n+ 2 - 9380\\n--- ------')`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `3 3801 45 123\n+ 855 - 2 + 43 + 49\n----- ------ ---- -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]), ' 3 3801 45 123\\n+ 855 - 2 + 43 + 49\\n----- ------ ---- -----')`); + } +}) +``` + +`arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"])` should return `11 3801 1 123 1\n+ 4 - 2999 + 2 + 49 - 9380\n---- ------ --- ----- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"]), ' 11 3801 1 123 1\\n+ 4 - 2999 + 2 + 49 - 9380\\n---- ------ --- ----- ------')`); + } +}) +``` + +`arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"])` should return `'Error: Too many problems.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"]), 'Error: Too many problems.')`); + } +}) +``` + +`arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `"Error: Operator must be '+' or '-'."`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Operator must be '+' or '-'.")`); + } +}) +``` + +`arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers cannot be more than four digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers cannot be more than four digits.")`); + } +}) +``` + +`arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers must only contain digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers must only contain digits.")`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "988 + 40"], True)` should return `3 988\n+ 855 + 40\n----- -----\n 858 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "988 + 40"], True), " 3 988\\n+ 855 + 40\\n----- -----\\n 858 1028")`); + } +}) +``` + +`arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True)` should return `32 1 45 123 988\n- 698 - 3801 + 43 + 49 + 40\n----- ------ ---- ----- -----\n -666 -3800 88 172 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True), " 32 1 45 123 988\\n- 698 - 3801 + 43 + 49 + 40\\n----- ------ ---- ----- -----\\n -666 -3800 88 172 1028")`); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def arithmetic_arranger(problems, show_answers=False): + + return problems + +print(f'\n{arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"])}') +``` + +# --solutions-- + +```py +def arithmetic_arranger(problems, result=False): + + lin1 = "" + lin2 = "" + lin3 = "" + lin4 = "" + + if len(problems) > 5: + return 'Error: Too many problems.' + for problem in problems: + [num1, sym, num2] = problem.split() + sign = ['+', '-'] + if sym not in sign: + return ("Error: Operator must be '+' or '-'.") + if len(num1) > 4 or len(num2) > 4: + return ("Error: Numbers cannot be more than four digits.") + if not num1.isnumeric() or not num2.isnumeric(): + return ("Error: Numbers must only contain digits.") + + lin1 += " " + num1 + " " if len(num1) >= len( + num2) else " " * (len(num2) + 2 - len(num1)) + num1 + " " + lin2 += sym + " " + num2 + " " if len(num2) >= len( + num1) else sym + " " * (len(num1) - len(num2) + 1) + num2 + " " + nmax = (len(num1) + 2) if len(num1) >= len(num2) else (len(num2) + 2) + lin3 += "-" * nmax + " " + op = int(num1) + int(num2) if sym == "+" else int(num1) - int(num2) + lin4 += (" " * (nmax - len(str(op)))) + str(op) + " " + + arranged_problems = lin1.rstrip() + "\n" + lin2.rstrip( + ) + "\n" + lin3.rstrip() + if result: + arranged_problems += "\n" + lin4.rstrip() + + return arranged_problems +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md index ed3ecb35125..d61bbbe642a 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md @@ -23,7 +23,7 @@ Add a new key-value pair to your dictionary. Use the string `species` as the key You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 1 `)) }) @@ -32,7 +32,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have a `species` key with the value `guinea pig` inside your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig"} `)) }) diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md index c356967f2fe..f6de3c5e1ec 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md @@ -14,7 +14,7 @@ Now, replace the existent keys with the strings `A` and `B` — one for each nod Your dictionary should have an `A` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "A" in my_graph `)) }) @@ -23,7 +23,7 @@ Your dictionary should have an `A` key. Your `A` key should have `B` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -32,7 +32,7 @@ Your `A` key should have `B` as the value. Your dictionary should have an `B` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "B" in my_graph `)) }) @@ -41,7 +41,7 @@ Your dictionary should have an `B` key. Your `B` key should have `A` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["B"] == "A" `)) }) @@ -50,7 +50,7 @@ Your `B` key should have `A` as the value. Your dictionary should have two keys. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph) == 2 `)) }) diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md index 22d548a4549..3d4376755ce 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md @@ -16,7 +16,7 @@ Modify your existing dictionary to represent this arrangement. Use a list to rep Your dictionary should have 3 keys — `A`, `B`, and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C"] len(my_graph) == 3 and all(key in my_graph for key in key_list) `)) @@ -26,7 +26,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["A"]` should have the `B` node as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -35,7 +35,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -44,7 +44,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. The value of `my_graph["B"]` should be a list containing the other two nodes. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -53,7 +53,7 @@ The value of `my_graph["B"]` should be a list containing the other two nodes. The value of `my_graph["C"]` should be the connected node. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["C"] == "B" `)) }) diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md index 50a8c0ffa25..4af542bab3d 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md @@ -14,7 +14,7 @@ Add one last node, `D`, which is connected with `A` and `C`. Modify your diction Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -24,7 +24,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list `)) }) @@ -33,7 +33,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["A"]) == 2 and "B" in my_graph["A"] and "D" in my_graph["A"] `)) }) @@ -42,7 +42,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -51,7 +51,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -60,7 +60,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list `)) }) @@ -69,7 +69,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["C"]) == 2 and "B" in my_graph["C"] and "D" in my_graph["C"] `)) }) @@ -78,7 +78,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list `)) }) @@ -87,7 +87,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["D"]) == 2 and "A" in my_graph["D"] and "C" in my_graph["D"] `)) }) diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md index e13a67deee0..5a8c6bcacb8 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md @@ -27,7 +27,7 @@ Modify `my_graph["A"]` into a list of tuples, considering the following distance Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -37,7 +37,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list and all(type(i) is tuple for i in my_graph["A"]) `)) }) @@ -46,7 +46,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 3), ("D", 1)] len(my_graph["A"]) == 2 and all(t in my_graph["A"] for t in tuples) `)) diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md index 2b424c4a231..f192cb735b9 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md @@ -16,7 +16,7 @@ Declare an empty function called `shortest_path` and don't forget the `pass` key You should have a `shortest_path` function. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect inspect.isfunction(shortest_path) `)) diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md index dcf43b6f29f..4f679f7ed36 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md @@ -16,7 +16,7 @@ For that your function needs two parameters: `graph`, and `start`. Add them to y Your function should accept `graph` and `start` as the parameters, in this order. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == '(graph, start)' diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md index b96f20dc73d..ed56b786191 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md @@ -22,7 +22,7 @@ Your function should take three parameters:`graph`, `start`, and `target`. The o The `target` parameter should have the default value of an empty string. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == "(graph, start, target='')" diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md index 481ca140566..14b99cc9f6a 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md @@ -14,7 +14,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list and all(type(i) is tuple for i in my_graph["B"]) `)) }) @@ -23,7 +23,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 3), ("C", 4)] len(my_graph["B"]) == 2 and all(t in my_graph["B"] for t in tuples) `)) diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md index 4b27a649bb9..e887aefc206 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md @@ -14,7 +14,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list and all(type(i) is tuple for i in my_graph["C"]) `)) }) @@ -23,7 +23,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 4), ("D", 7)] len(my_graph["C"]) == 2 and all(t in my_graph["C"] for t in tuples) `)) @@ -33,7 +33,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list and all(type(i) is tuple for i in my_graph["D"]) `)) }) @@ -42,7 +42,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 1), ("C", 7)] len(my_graph["D"]) == 2 and all(t in my_graph["D"] for t in tuples) `)) diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md index 396e142eafa..6a674f3159d 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md @@ -25,7 +25,7 @@ Now, you are going to test your function with another graph. Change `my_graph` i You should modify `my_graph` into the provided graph. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` g = { 'A': [('B', 5), ('C', 3), ('E', 11)], 'B': [('A', 5), ('C', 1), ('F', 2)], diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md index 802e9f45b17..20a1b582f01 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md @@ -27,7 +27,7 @@ You should have a variable called `copper`. Your `copper` variable should have the value of an empty dictionary. Use a pair of curly braces for that. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {} `)) }) diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md index 4960bec00d6..bd4bb15a33c 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md @@ -16,7 +16,7 @@ Add another key `age` to your dictionary and give it the integer number `2` as v You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 2 `)) }) @@ -25,7 +25,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have an `age` key with the value `2` just after `'species': 'guinea pig'`, inside your `copper` dictionary. Don't forget the comma. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md index 7c44e5bda54..747cc12b60a 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md @@ -25,7 +25,7 @@ After your dictionary, follow the example above to access the `species` key of ` You should not modify your dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md index 3a1de9aa6c7..9dc64d9a818 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md @@ -24,7 +24,7 @@ You should rename your `copper` dictionary into `my_graph`. Your `my_graph` variable should be a dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph) is dict `)) }) diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md index 2d028241d86..dbefd1a404b 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md @@ -16,7 +16,7 @@ Your `merge_sort` function should take a single parameter: `array`. ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('merge_sort'))) == '(array)' + str(inspect.signature(merge_sort)) == '(array)' `)) }) ``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md index e8531fed130..d94f0bf69d4 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md @@ -19,13 +19,9 @@ You should create an `if` statement to check if `len(array) <= 1`. Don't forget ```js ({ - test: () => { - const transformedCode = code.replace(/\r/g, ""); - const merge_sort = __helpers.python.getDef("\n" + transformedCode, "merge_sort"); - const { function_body } = merge_sort; - - assert.match(function_body, /if\s+len\(\s*array\s*\)\s*<=\s*1:\s*pass/); - } + test: () => assert(runPython(` + _Node(_code).find_function("merge_sort").find_ifs()[0].find_conditions()[0].is_equivalent("len(array) <= 1") + `)) }) ``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md index 8f70bbd0dde..79edb01f767 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md @@ -22,13 +22,11 @@ Use the `pass` keyword in the body of the `if` statement. Your `if` statement should check if `__name__` has a value of `'__main__'` ```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:/); -``` - -You should have the `pass` keyword in the body of your `if` statement - -```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:\s*[^}]*\bpass\b/); +({ + test: () => assert(runPython(` + _Node(_code).find_ifs()[0].find_conditions()[0].is_equivalent("__name__ == '__main__'") + `)) +}) ``` # --seed-- diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md index c134dbdce47..89ac8c41d5c 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md @@ -25,7 +25,6 @@ Your `rods` variable should be an empty dictionary. ```js ({ test: () => assert(runPython(` - rods = __locals.get("rods") rods == {} `)) }) diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md index b27a4823a3f..e3d94b01cfc 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md @@ -19,8 +19,7 @@ You should use the `range()` function to assign a sequence of numbers to `rods[' ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - type(a['A']) is range + type(rods['A']) is range `)) }) ``` @@ -29,8 +28,7 @@ You should use the `range()` function to assign the sequence of numbers from `3` ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == range(3, 0, -1) + rods['A'] == range(3, 0, -1) `)) }) ``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md index a47af848227..dd3b4b30361 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md @@ -17,8 +17,7 @@ You should pass your `range()` call to the `list()` function. ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == list(range(3, 0, -1)) + rods['A'] == list(range(3, 0, -1)) `)) }) ``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md index 9ca1ac7b1bb..7cf6a228893 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md @@ -23,7 +23,7 @@ You should declare an empty function named `move`. Remember to use the `pass` ke ({ test: () => { assert(runPython(` import inspect - inspect.isfunction(__locals.get('move')) + inspect.isfunction(move) `)) } }) diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md index 6030469fd20..919798d6668 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md @@ -23,9 +23,8 @@ The value of `number_of_moves` should be the expression to calculate the number ```js ({ test: () => { - assert(runPython(` - a = __locals.get('NUMBER_OF_DISKS') - __locals.get('number_of_moves') == 2**a -1 + assert(runPython(` + number_of_moves == 2**NUMBER_OF_DISKS -1 `)) } }) ``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md index 07373a8a57b..be3b2e1f1fd 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md @@ -16,7 +16,7 @@ You should declare an empty function named `make_allowed_move`. Remember to use ```js ({ test: () => assert(runPython(` import inspect - inspect.isfunction(__locals.get('make_allowed_move')) + inspect.isfunction(make_allowed_move) `)) }) ``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md index 5a65195b644..f0b811c2c11 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md @@ -16,7 +16,7 @@ Your `make_allowed_move()` function should have two parameters named `rod1` and ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('make_allowed_move'))) == '(rod1, rod2)' + str(inspect.signature(make_allowed_move)) == '(rod1, rod2)' `)) }) ``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md index 9f7cee33aae..bdba2a1710d 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md @@ -14,16 +14,14 @@ The `rods` dictionary will represent the three rods with their disks. Give it th Your `rods` dictionary should have an `'A'` key. ```js -({ test: () => assert(runPython(`'A' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'A' in rods`)) }) ``` `rods['A']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['A'] == [] + rods['A'] == [] `)) }) ``` @@ -31,16 +29,14 @@ Your `rods` dictionary should have an `'A'` key. Your `rods` dictionary should have a `'B'` key. ```js -({ test: () => assert(runPython(`'B' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'B' in rods`)) }) ``` `rods['B']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['B'] == [] + rods['B'] == [] `)) }) ``` @@ -48,16 +44,14 @@ Your `rods` dictionary should have a `'B'` key. Your `rods` dictionary should have a `'C'` key. ```js -({ test: () => assert(runPython(`'C' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'C' in rods`)) }) ``` `rods['C']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['C'] == [] + rods['C'] == [] `)) }) ``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md index ddb0d206a44..1f77dba25ae 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md @@ -22,7 +22,7 @@ Your `move()` function should have `n`, `source`, `auxiliary`, and `target` as t ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('move'))) == '(n, source, auxiliary, target)' + str(inspect.signature(move)) == '(n, source, auxiliary, target)' `)) }) ``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md index dc9c1aba2ff..e03d92b908e 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md @@ -17,9 +17,8 @@ You should reduce the indentation level of all the code after the `return` state ```js ({ test: () => assert(runPython(` - hanoi = __locals.get("move") a, b, c = [3, 2, 1], [], [] - hanoi(3, a, b, c) + move(3, a, b, c) a == [] and b == [] and c == [3, 2, 1] `)) }) diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md index 16e7b5b68ed..00efcbb8726 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md @@ -23,9 +23,8 @@ You should add `direction` as the third parameter of your function. ```js ({ test: () => assert(runPython(` - import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + import inspect + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction)' `)) }) diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md index 74562ae26a5..d19dc6dbe27 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md @@ -24,8 +24,7 @@ You should declare a new function called `encrypt`. Remember to use the `pass` k ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - inspect.isfunction(f) + inspect.isfunction(encrypt) `)) }) ``` @@ -35,8 +34,7 @@ Your `encrypt` function should take `message` and `key` as the parameters. The o ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - sig = inspect.signature(f) + sig = inspect.signature(encrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md index fa091717efb..b7357c63760 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md @@ -16,8 +16,7 @@ You should define a new function called `decrypt`. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - inspect.isfunction(f) + inspect.isfunction(decrypt) `)) }) ``` @@ -27,8 +26,7 @@ Your `decrypt` function should take `message` and `key` as the parameters. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - sig = inspect.signature(f) + sig = inspect.signature(decrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md index 19fcb7ee6a3..f719d77790e 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md @@ -23,8 +23,7 @@ The `direction` parameter of your `vigenere` function should have a default valu ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction=1)' `)) }) diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md new file mode 100644 index 00000000000..733f024fa29 --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md @@ -0,0 +1,39 @@ +--- +id: 65ef181dad3d96b14a21a03e +title: Step 1 +challengeType: 20 +dashedName: step-1 +--- + +# --description-- + +In this project, you will find the approximate square root of a given number using the bisection method. + +The bisection method is a technique for finding the roots of a real-valued function. It works by narrowing down an interval where the square root lies until it converges to a value within a specified tolerance. + +Begin by creating a function named `square_root_bisection`. Leave the parameters empty for now. + +# --hints-- + +You should define the function `square_root_bisection` with no parameters. + +```js +({ + test: () => { + assert(runPython(` + import inspect + inspect.isfunction(square_root_bisection) + `)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md new file mode 100644 index 00000000000..f5091e5a2c6 --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md @@ -0,0 +1,38 @@ +--- +id: 65ef190c6b51e9b5a5f7ed29 +title: Step 2 +challengeType: 20 +dashedName: step-2 +--- + +# --description-- + +Give the `square_root_bisection` method the following parameters: + +- `square_target`: The number for which you want to find the square root. +- `tolerance` (optional): The acceptable difference between the square of the approximate root value and the actual target value (default is `1e-7`). The tolerance `1e-7` implies that the solution will be accurate to within `0.0000001` of the true value and is a good default choice that balances accuracy and performance. +- `max_iterations` (optional): The maximum number of iterations to perform (default is `100`). If the method doesn't converge within this limit, you'll assume the solution is not found. + +# --hints-- + +Your function should have these parameters: `square_target`, `tolerance = 1e-7`, and `max_iterations = 100`. The order matters. + +```js +({ + test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").has_args("square_target, tolerance=1e-7, max_iterations=100")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py + +--fcc-editable-region-- +def square_root_bisection(): + pass +--fcc-editable-region-- + +``` + diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md new file mode 100644 index 00000000000..77628582774 --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md @@ -0,0 +1,46 @@ +--- +id: 65ef19425d1b27b6c930bae6 +title: Step 3 +challengeType: 20 +dashedName: step-3 +--- + +# --description-- + +If the number for which you want to find the square root is negative, the code should raise an error as the square root of a negative number is not defined in real numbers. + +Remove the `pass` statement and create an `if` statement to check if `square_target` is less than `0`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").has_pass()`)) + } +}) +``` + +You should create an `if` statement to check if `square_target < 0`. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_if("square_target < 0").is_empty()`)) + + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance = 1e-7, max_iterations = 100): + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md new file mode 100644 index 00000000000..20f407dfd2a --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md @@ -0,0 +1,46 @@ +--- +id: 65ef198fde24dfb7ff675b42 +title: Step 4 +challengeType: 20 +dashedName: step-4 +--- + +# --description-- + +If the `square_target` is less than `0`, raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'`. Don't forget to remove the `pass` keyword. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'` inside the `if` body. + +```js +({ + test: () => { + + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].is_equivalent("raise ValueError('Square root of negative number is not defined in real numbers')")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md new file mode 100644 index 00000000000..f31f83a0ed3 --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md @@ -0,0 +1,38 @@ +--- +id: 65ef19ec318e2fb9066381e3 +title: Step 5 +challengeType: 20 +dashedName: step-5 +--- + +# --description-- + +You'll create separate cases for when `square_target` is `0` or `1`. + +Begin by creating an `if` statement to check if `square_target` is equal to `1`. + +# --hints-- + +You should create an `if` statement to check that `square_target == 1`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[0].is_equivalent("square_target == 1")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md new file mode 100644 index 00000000000..927a215705a --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md @@ -0,0 +1,51 @@ +--- +id: 65ef1a1fcb527bba0ca82ccf +title: Step 6 +challengeType: 20 +dashedName: step-6 +--- + +# --description-- + +If the `square_target` is equal to `1`, declare a variable `root` and assign it the value `1` . Also, print the message `'The square root of {square_target} is 1'`. Remember to format the message using an f-string. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should assign the value `1` to the `root` variable and print the message `'The square root of {square_target} is 1'` inside the `if` body. + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].is_equivalent("root = 1\\nprint(f'The square root of {square_target} is 1')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md new file mode 100644 index 00000000000..9ba5f5b573f --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md @@ -0,0 +1,55 @@ +--- +id: 65ef1a50049cf9bada13266f +title: Step 7 +challengeType: 20 +dashedName: step-7 +--- + +# --description-- + +Create an `elif` statement to check if `square_target` is equal to `0`. If it is, assign the value `0` to the `root` variable. Also, print the message `'The square root of {square_target} is 0'`. Remember to format the message using an f-string. + +# --hints-- + +You should have an `elif` statement to check the condition `square_target == 0`. + + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[1].is_equivalent("square_target == 0")`)); + } +}) + +``` + +You should assign the value `0` to the `root` variable and pass the argument `f'The square root of {square_target} is 0'` to a `print` call. + + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[1].is_equivalent("root = 0\\nprint(f'The square root of {square_target} is 0')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md new file mode 100644 index 00000000000..0fb10817783 --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md @@ -0,0 +1,45 @@ +--- +id: 65ef1a720d6e65bbb0d22463 +title: Step 8 +challengeType: 20 +dashedName: step-8 +--- + +# --description-- +Next, you are going to work on the cases where the `square_target` is a positive number apart from `1` or `0`. + +Create an `else` clause to handle these cases. + +# --hints-- + +Create an `else` clause and do not forget to add a `pass` keyword. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[2] == _Node()`)) + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md new file mode 100644 index 00000000000..8f10c9990f1 --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md @@ -0,0 +1,73 @@ +--- +id: 65ef1aacca094bbcc2e2a3c8 +title: Step 9 +challengeType: 20 +dashedName: step-9 +--- + +# --description-- + +In Python, the `max()` function returns the largest of the input values. + +```python +max(1, 2, 3) # Output: 3 +``` + +The variables `low` and `high` will be used to define the initial interval where the square root lies. + +Inside the `else` clause, initialize the `low` variable to `0` and the `high` variable to be the maximum of either `1` or `square_target` as the square root of a number is always less than or equal to the number itself. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].has_pass()`)) + } +}) +``` + +You should declare a variable `low` and assign it `0`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("low").is_equivalent("low = 0")`)); } +}) + +``` + +You should declare a variable `high` and use the `max()` function to assign it the maximum value between `1` and `square_target`. + +```js + +({ test: () => assert(runPython(` +node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("high") +values = ["high = max(1, square_target)", "high = max(square_target, 1)"] +any(node.is_equivalent(val) for val in values) +`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md new file mode 100644 index 00000000000..6711973a758 --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md @@ -0,0 +1,46 @@ +--- +id: 65ef1afca9a8f6be0d4150ba +title: Step 10 +challengeType: 20 +dashedName: step-10 +--- + +# --description-- + +Set the value of `root` to `None` as at this point, you don't have an approximate value yet. + +# --hints-- + +The value of `root` should be `None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].is_equivalent("low = 0\\nhigh = max(1, square_target)\\nroot = None")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + low = 0 + high = max(1, square_target) + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md new file mode 100644 index 00000000000..69406d9fee2 --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md @@ -0,0 +1,51 @@ +--- +id: 65ef1be2b958cabf712296cd +title: Step 11 +challengeType: 20 +dashedName: step-11 +--- + +# --description-- + +Now you'll repeatedly narrow down the interval by finding the midpoint of the current interval and comparing the square of the midpoint with the target value. + +For that, inside the `else` block, create a `for` loop that runs up to `max_iterations` times. + +# --hints-- + +You should create a `for` loop to iterate over `range(max_iterations)`. Use `_` as the loop variable. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].is_equivalent("for _ in range(max_iterations):\\n pass")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md new file mode 100644 index 00000000000..e5efb88bafc --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md @@ -0,0 +1,78 @@ +--- +id: 65ef1c0a03fcabc04ded7e69 +title: Step 12 +challengeType: 20 +dashedName: step-12 +--- + +# --description-- + +Inside the for loop, calculate the midpoint of the interval ranging from `low` to `high`. Assign this value to a variable `mid`. + +Also, calculate the square of the midpoint (`mid`) and store it in the variable `square_mid`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].has_pass()`)) + + } + +}) + +``` + +You should declare a variable `mid` and assign it `(low + high) / 2` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(` + node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("mid") + values = ["mid = (low + high) / 2", "mid = (high + low) / 2"] + any(node.is_equivalent(val) for val in values) + `)) + + } + +}) +``` + +You should declare a variable `square_mid` and assign it `mid**2` inside the body of the for loop. + +```js +({ test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("square_mid").is_equivalent("square_mid = mid**2")`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md new file mode 100644 index 00000000000..f365f00475d --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md @@ -0,0 +1,53 @@ +--- +id: 65ef1c34a541afc12dbb849d +title: Step 13 +challengeType: 20 +dashedName: step-13 +--- + +# --description-- + +The `abs()` function returns the absolute value of a number, which is always positive, regardless of the number sign. You will use it to check that the estimated square root is close enough to the actual value. + +Now, create an `if` statement to check if the absolute value of the difference between `square_mid` and `square_target` is within the specified `tolerance`. + +# --hints-- + +You should have an `if` statement with the condition `abs(square_mid - square_target) < tolerance:` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[0].is_equivalent("abs(square_mid - square_target) < tolerance")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md new file mode 100644 index 00000000000..7c84ec9d7fe --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md @@ -0,0 +1,68 @@ +--- +id: 65ef1cb031de30c2cde64c12 +title: Step 14 +challengeType: 20 +dashedName: step-14 +--- + +# --description-- + +If the difference is within the specified `tolerance`, set the value of `root` to `mid` and break out of the loop. + +# --hints-- + +You should remove the existing `pass` statement. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].has_pass()`)) + } + +}) + +``` + +You should assign the value of `mid` to `root` and break out of the loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].is_equivalent("root = mid\\nbreak")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md new file mode 100644 index 00000000000..18a6767deab --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md @@ -0,0 +1,71 @@ +--- +id: 65ef1cda150a59c3b8306944 +title: Step 15 +challengeType: 20 +dashedName: step-15 +--- + +# --description-- + +If the difference is not within the specified `tolerance`, create an `elif` statement to check if `square_mid` is less than `square_target`. + +Assign the value of `mid` to `low` as the square root would now lie between `low` and `mid`. + +# --hints-- + +You should create an `elif` statement that checks if `square_mid < square_target`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[1].is_equivalent("square_mid < square_target")`)) + + } + +}) +``` + +You should assign the value of `mid` to `low`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[1].is_equivalent("low = mid")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md new file mode 100644 index 00000000000..06598491f2e --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md @@ -0,0 +1,70 @@ +--- +id: 65ef1d104c2be9c4d8e22075 +title: Step 16 +challengeType: 20 +dashedName: step-16 +--- + +# --description-- + +If both the `if` and `elif` conditions are not met, the value of `mid` would be greater than `square_target`. In this case, create an `else` clause and assign the value of `mid` to `high`. + +# --hints-- + +You should have an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[2]== _Node()`)); + } +}) + +``` + +You should assign the value of `mid` to `high` in the `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[2].is_equivalent("high = mid")`)); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- + elif square_mid < square_target: + low = mid + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md new file mode 100644 index 00000000000..45e3e9987a8 --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md @@ -0,0 +1,76 @@ +--- +id: 65ef1d5e3d2927c5e0f4997b +title: Step 17 +challengeType: 20 +dashedName: step-17 +--- + +# --description-- + +Outside the for loop, create an `if` statement to check if the value of `root` is still `None`. If it is, print the message `'Failed to converge within {max_iterations} iterations.'`. Remember to format the message using an f-string. + +# --hints-- + +You should create an `if` statement that checks if `root is None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[0].is_equivalent("root is None")`)); + + } +}) +``` + +You should pass the argument `f'Failed to converge within {max_iterations} iterations.'` to the `print` function. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].is_equivalent("if root is None:\\n print(f'Failed to converge within {max_iterations} iterations.')")`)); + + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md new file mode 100644 index 00000000000..ffe75554dd8 --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md @@ -0,0 +1,77 @@ +--- +id: 65ef1d924ff2e5c7031c6ce8 +title: Step 18 +challengeType: 20 +dashedName: step-18 +--- + +# --description-- + +Create an `else` clause to handle the case where the value of `root` is not `None`, indicating that a root hass been found. If it is not `None`, print the message `'The square root of {square_target} is approximately {root}'`. Remember to format using an f-string. + +# --hints-- + +You should create an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[1] == _Node()`)); + } +}) + +``` + +You should print `f'The square root of {square_target} is approximately {root}'` within the `else` body. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_bodies()[1].is_equivalent("print(f'The square root of {square_target} is approximately {root}')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md new file mode 100644 index 00000000000..1a2bb01cf56 --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md @@ -0,0 +1,68 @@ +--- +id: 65ef1dd722f6e7c8294eeec4 +title: Step 19 +challengeType: 20 +dashedName: step-19 +--- + +# --description-- + +Finally, return the value of `root` from the `square_root_bisection` function. + +# --hints-- + +You should return `root` at the end of the function. + +```js +({ + test: () => + { + const pyClassStr = runPython(`str(_Node(_code).find_function("square_root_bisection"))`); + assert.match(pyClassStr, /return\s*root/) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md new file mode 100644 index 00000000000..7904b9bceab --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md @@ -0,0 +1,70 @@ +--- +id: 65ef1e10268f8ec9121446d1 +title: Step 20 +challengeType: 20 +dashedName: step-20 +--- + +# --description-- + +Outside the function definiton, create a variable `N` and assign the value of `16` to it. + +# --hints-- + +You should have the variable `N = 16` outside the function definition. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_variable("N").is_equivalent("N = 16")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md new file mode 100644 index 00000000000..71da1b62c03 --- /dev/null +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md @@ -0,0 +1,115 @@ +--- +id: 65ef1eac497754cafa12a26c +title: Step 21 +challengeType: 20 +dashedName: step-21 +--- + +# --description-- + +Call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +Experiment with larger values. + +With this, you have successfully implemented the bisection method to find the square root of a number. + +# --hints-- + +You should call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +```js +({ + test: () => assert(runPython(`_Node(_code).has_call("square_root_bisection(N)")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- +N = 16 + +--fcc-editable-region-- + +``` + +# --solutions-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +N = 16 +square_root_bisection(N) +``` diff --git a/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md b/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md index 681d58b93b7..dc1f0229f60 100644 --- a/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md +++ b/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md @@ -7,7 +7,7 @@ dashedName: step-8 # --description-- -To see the `cat-head` element, give it a linear gradient background with `#5e5e5e` at `85%` and `#45454f` at `100%`. +To see the `.cat-head` element, give it a linear gradient background with `#5e5e5e` at `85%` and `#45454f` at `100%`. You might not notice the difference between these two colors, but they are there. diff --git a/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md b/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md index 513d743ecfe..d281f2510f2 100644 --- a/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md +++ b/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md @@ -11,7 +11,7 @@ Inside your `.cat-ears` element, create two `div` elements with the classes `cat # --hints-- -You should not change the existing `div` element with the class `car-ears`. +You should not change the existing `div` element with the class `cat-ears`. ```js assert(document.querySelectorAll('div.cat-ears').length === 1); diff --git a/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md b/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md index 767374feb30..06e3413df12 100644 --- a/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md +++ b/curriculum/challenges/arabic/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md @@ -11,7 +11,7 @@ The last position property value is `sticky`. `sticky` positioning is a hybrid o Change the value of the `position` property of `.cat-head` to `sticky`, set `top` to `0`, then remove `left` and its value. -**Note**: To see how `sticky` works, you have to place a couple of texts before and after your `.cat-head` `div` element. If you scroll up after that, you'll see that the `.cat-head` gets stuck to the top and remains there. +**Note**: To see how `sticky` works, you have to place a couple of texts before and after your `.cat-head` `div` element. If you scroll down after that, you'll see that the `.cat-head` gets stuck to the top and remains there. # --hints-- diff --git a/curriculum/challenges/arabic/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md b/curriculum/challenges/arabic/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md index 0f93285cb97..5f212983dbc 100644 --- a/curriculum/challenges/arabic/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md +++ b/curriculum/challenges/arabic/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md @@ -61,7 +61,7 @@ while (continueLoop) { --fcc-editable-region-- --fcc-editable-region-- -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/arabic/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md b/curriculum/challenges/arabic/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md index bf40abef119..3f935935d65 100644 --- a/curriculum/challenges/arabic/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md +++ b/curriculum/challenges/arabic/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md @@ -44,7 +44,7 @@ let done = 0; while (continueLoop) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/arabic/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md b/curriculum/challenges/arabic/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md index 9c976287a58..38f1716a030 100644 --- a/curriculum/challenges/arabic/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md +++ b/curriculum/challenges/arabic/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md @@ -48,7 +48,7 @@ let done = 0; while (done !== count) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/arabic/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md b/curriculum/challenges/arabic/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md index 90516c7ff6a..55a21d1744e 100644 --- a/curriculum/challenges/arabic/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md +++ b/curriculum/challenges/arabic/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md @@ -23,15 +23,7 @@ Test value of `__name__` ```js ({ - test: () => assert(__pyodide.runPython(`__name__ == '__main__'`)) -}) -``` - -Test __locals and __pyodide - -```js -({ - test: () => assert(__pyodide.runPython(`__locals.get('add')(4,5) == 9`)) + test: () => assert(runPython(`__name__ == '__main__'`)) }) ``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md index d2139487de3..de4fa3e7ee3 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md @@ -1,6 +1,5 @@ --- id: 658111239f39a01c8f095c44 -videoId: nLDychdBwUg title: "Dialogue 1: What Motivates the Team?" challengeType: 21 dashedName: dialogue-1-what-motivates-the-team @@ -13,3 +12,275 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Maria", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.5, + "dialogue": { + "text": "Hey Maria, I have a question… Do you know what motivates the team?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 4.9, + "finishTime": 7.4, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 8.7, + "finishTime": 12.3, + "dialogue": { + "text": "Hi Brian! Well, one thing that really motivates me is learning new things.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 12.7, + "finishTime": 16, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 16.5, + "finishTime": 18.2, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 19.7, + "finishTime": 20.9, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 21.3, + "finishTime": 24.7, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 25, + "finishTime": 27.2, + "dialogue": { + "text": "But you know what demotivates me sometimes?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 27.7, + "finishTime": 32.6, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 33.1, + "finishTime": 37.3, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 37.7, + "finishTime": 39.7, + "dialogue": { + "text": "Well, collaborating with our creative team", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 39.7, + "finishTime": 42.5, + "dialogue": { + "text": "and brainstorming many ideas really inspires me.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 42.8, + "finishTime": 44.6, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 45.5, + "finishTime": 49, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 49.3, + "finishTime": 53.6, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 54, + "finishTime": 55.5, + "dialogue": { + "text": "It is really frustrating.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 56.5, + "finishTime": 58.4, + "dialogue": { + "text": "Yeah, technical glitches are complicated", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 58.4, + "finishTime": 61, + "dialogue": { + "text": "and there's not much we can do other than try to solve them.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 62, + "finishTime": 63.3, + "dialogue": { + "text": "But do you know what else is great?", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 63.7, + "finishTime": 66.7, + "dialogue": { + "text": "Seeing the team's enthusiasm after solving these issues.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 67.1, + "finishTime": 69.8, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 71.3, + "finishTime": 75.4, + "dialogue": { + "text": "Yeah. Wow. You know what? This was really a motivating talk.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 75.7, + "finishTime": 77.1, + "dialogue": { + "text": "Thanks for sharing your thoughts.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 77.7, + "finishTime": 79.8, + "dialogue": { + "text": "Anytime. It's good to have these discussions.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 80, + "finishTime": 81.6, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "right" + } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 82.1 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 82.6 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md index 5eb9cbab87f..bd40d89ce39 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-6 --- - + # --description-- @@ -18,7 +15,7 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ## --sentence-- -`Well, one thing that really motivates me is _ new things.` +`Hi, Brian. Well, one thing that really motivates me is _ new things.` ## --blanks-- @@ -27,3 +24,47 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ### --feedback-- This word is a gerund, the `-ing` form of the verb used as a noun, indicating the action or process of gaining knowledge. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md index 57d5a2b1a4d..279e2861a88 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-5 --- - + # --description-- @@ -20,7 +17,7 @@ When you add an `s` at the end of a word, like `things`, it means you are talkin ## --sentence-- -`Hi Brian! _, one _ that really motivates me _ learning new _.` +`Hi, Brian! _, one _ that really motivates me _ learning new _.` ## --blanks-- @@ -53,3 +50,47 @@ This is the verb `to be` conjugated in the third person singular. ### --feedback-- Maria uses this word to talk about more than one item or idea she likes to learn. It is the plural form of `thing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md index eee61930dcc..3ecb0ccb702 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-7 --- - + # --description-- @@ -51,3 +48,47 @@ learning new things ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md index 053ae896f0b..80d98bbbc33 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-8 --- - + # --description-- @@ -37,3 +34,47 @@ This word is a gerund describing the activity Maria enjoys related to discoverin ### --feedback-- Another gerund that follows `and`, indicating another activity Maria enjoys, which is about getting better at something. It also ends in `-ing` and serves as a noun. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 15.04 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.28, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.78 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md index fbe4dcc505d..cfa8469782b 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-10 --- - + # --description-- @@ -26,7 +23,7 @@ In `I love exploring many new technologies`, how is `exploring` used? ## --answers-- -As a present continuous +As a verb in the present continuous structure ### --feedback-- @@ -34,7 +31,7 @@ Present continuous are for actions happening now. This is not showing an action --- -As a simple present verb +As a verb in the simple present structure ### --feedback-- @@ -42,11 +39,11 @@ Simple present verbs don't end in `-ing`. --- -As a gerund +As a verb in the gerund form --- -As a past participle +As a verb in the past participle form ### --feedback-- @@ -55,3 +52,47 @@ Past participles are for perfect tenses or as adjectives. This is not used like ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 6.50, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills. It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 7.00 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md index 80690caccd2..252cf48c05b 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-18 --- - + # --description-- @@ -31,3 +28,47 @@ Adding a prefix to a word can change its meaning. ### --feedback-- Maria uses an adjective ending in `-ing` to describe a feeling that is the opposite of `motivating`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 32.22, + "finishTimestamp": 36.08 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.86, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.36 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md index 9001228085f..2ea50eff48d 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-11 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to the audio and complete the sentence. ### --feedback-- This word is used when someone listens to what another person says. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 19.86 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 2.68 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md index f00bebea879..042955730aa 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-12 --- - + # --description-- @@ -49,3 +46,47 @@ This word means to develop or become bigger or more advanced. It ends with `-ing ### --feedback-- This word is related to work or a career. It describes doing something in a way that shows good skills and behavior at a job. it ends with `-ly` + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 20.28, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md index 885332a3dfc..008035b84e7 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-13 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on how skill improvement fits into overall personal and professional dev ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.98, + "dialogue": { + "text": "That's great to hear, Maria. Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.48 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md index a99fd602832..e087041f3d9 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-14 --- - + # --description-- @@ -53,3 +50,65 @@ He's adding to the conversation, not changing the topic. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 26.26 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 2.60, + "finishTime": 5.64, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot,", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 6.02, + "finishTime": 8.58, + "dialogue": { + "text": "but you know what demotivates me sometimes?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 9.08 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md index 0bcef38811f..ed340f1a31c 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md @@ -28,4 +28,48 @@ Listen to the audio and complete the sentence. ### --feedback-- -This word means feeling very happy and eager. +This word means feeling very happy and eager. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 15.32, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.94, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.44 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md index b425e084763..cf6dcc31710 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-16 --- - + # --description-- @@ -55,3 +52,47 @@ This phrase means having plenty of time, which is different from what Brian mean ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md index b5708ac00fe..8de15f47d1c 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-17 --- - + # --description-- @@ -47,3 +44,47 @@ This word is a preposition used to compare or illustrate a similarity to somethi ### --feedback-- It means you are doing something quickly because you do not have much time. It ends with `-ing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md index 5293029060e..f74bac67a8c 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-20 --- + + # --description-- The word `brainstorming` refers to a group discussion to produce ideas and solve problems. @@ -46,3 +48,47 @@ It means adhering to specific instructions, which is not the same as the word. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md index ea82aef1538..1b4aea4a2b1 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-28 --- - + # --description-- @@ -18,7 +15,7 @@ The phrase `slow down` means to decrease in speed or reduce the rate of progress ## --sentence-- -`The problem is encountering many technical issues that make our progress _ _.` +`The problem is encountering many technical issues that _ our progress _.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to describe a decrease in speed or pace. ### --feedback-- This adverb complements the phrase to indicate a reduction or decrease in intensity, speed, or amount. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md index ed1c423927b..bd8c7fa6444 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-32 --- + + # --description-- The phrase `other than` indicates the presence of an alternative or different option. @@ -46,3 +48,47 @@ It means the singular or exclusive option, which is not the same as the phrase. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md index d2a4201ca63..9712d6a3279 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-35 --- - + # --description-- @@ -43,3 +40,47 @@ This possessive adjective is used to refer to something that belongs to the pers ### --feedback-- This noun refers to the reason or reasons one has for acting or behaving in a particular way. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 66.12, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 3.68, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.18 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md index 8f432d36f95..c5b54c0b913 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-38 --- - + # --description-- @@ -29,3 +26,47 @@ In the dialogue, Maria talks about the importance of discussions to help them re ### --feedback-- This verb is used to make someone think of something they might have forgotten. It brings something back into someone's mind. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 76.52, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.08, + "dialogue": { + "text": "Anytime. It's good to have these discussions. It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.58 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md index ba9e43efcb6..974459e9326 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-39 --- - + # --description-- @@ -43,3 +40,47 @@ This pronoun refers to the speaker and at least one other person, indicating a c ### --feedback-- This word is used in the context of continuing forward or persevering in a particular action or state. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 79.06, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.54, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.04 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md index 2f8c34f4dbf..c1b55b444af 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md @@ -1,6 +1,5 @@ --- id: 658160772584ba319849f910 -videoId: nLDychdBwUg title: "Dialogue 2: Asking How Someone Feels" challengeType: 21 dashedName: dialogue-2-asking-how-someone-feels @@ -13,3 +12,239 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Alice", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Tom", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Alice", + "startTime": 2, + "finishTime": 5.6, + "dialogue": { + "text": "Hi Tom, you look a bit down these days. Is everything okay?", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 6.3, + "finishTime": 9.5, + "dialogue": { + "text": "Hey Alice, yeah, I feel a bit demotivated.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 9.8, + "finishTime": 13.6, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 13.8, + "finishTime": 16.7, + "dialogue": { + "text": "It's exhausting, and it feels like I'm constantly running", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 16.7, + "finishTime": 18.1, + "dialogue": { + "text": "without knowing where I'm going.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 18.9, + "finishTime": 22.7, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 23.4, + "finishTime": 25.7, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 26.2, + "finishTime": 28.8, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 28.8, + "finishTime": 30.6, + "dialogue": { + "text": "instead of working together as a team.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 31.3, + "finishTime": 34.7, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 35, + "finishTime": 38.4, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 38.9, + "finishTime": 41.7, + "dialogue": { + "text": "Sometimes, it feels like we're meeting for no reason,", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 41.7, + "finishTime": 44.3, + "dialogue": { + "text": "and it's hard to find time to actually work on projects.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 45, + "finishTime": 48.4, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 49, + "finishTime": 52.6, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 52.6, + "finishTime": 56.6, + "dialogue": { + "text": "without any variation. It feels like I'm wasting my skills and creativity.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 57.06, + "finishTime": 59, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 59.6, + "finishTime": 62.8, + "dialogue": { + "text": "Repeating the same tasks over and over can be demotivating.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 63.2, + "finishTime": 66.4, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 66.8, + "finishTime": 69.4, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation,", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 69.4, + "finishTime": 71.3, + "dialogue": { + "text": "and it's good to share and support each other.", + "align": "left" + } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 71.8 + }, + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 72.3 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md index b8674840c93..9a3003405af 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-40 --- - + # --description-- @@ -22,7 +19,7 @@ In this conversation, Alice notices something about Tom's mood and asks if he's ## --sentence-- -`Hi Tom, you look a bit _ _ days. Is everything okay?` +`Hi, Tom. You look a bit _ _ days. Is everything okay?` ## --blanks-- @@ -39,3 +36,47 @@ This word is used to describe feeling sad or unhappy. It's like when you're not ### --feedback-- This word is used with `days` to talk about the current time or the recent period. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 0.98, + "finishTimestamp": 4.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.60, + "dialogue": { + "text": "Hi, Tom. You look a bit down these days. Is everything okay?", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.10 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md index 8fe09a43d89..fdd78d7f84d 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-41 --- - + # --description-- @@ -20,7 +17,7 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ## --sentence-- -`Hey Alice, yeah, I feel a bit _.` +`Hey, Alice. Yeah, I feel a bit _.` ## --blanks-- @@ -29,3 +26,47 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ### --feedback-- This word is used to describe how Tom feels. It ends with `ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 8.48 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md index a8f6062add9..e30ea2d793a 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-42 --- - + # --description-- @@ -46,8 +43,52 @@ This word means `lacking` or `not having` something. --- -`break` +`breaks` ### --feedback-- -This word refers to a short period of rest or pause from work or activity. +This word refers to a short period of rest or pause from work or activity. Use the plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 8.84, + "finishTimestamp": 12.60 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.76, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.26 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md index 90185d888a6..b19719a1211 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-43 --- - + # --description-- @@ -45,3 +42,47 @@ This word means something is happening all the time or very often. ### --feedback-- This word is used to indicate the absence of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 12.82, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 5.30, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.80 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md index b6f27b9c9b9..524c4be5635 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-44 --- - + # --description-- @@ -18,7 +15,7 @@ Tom talks about what's making him feel demotivated. Let's figure out what is bot ## --text-- -What is making Tom feel demotivated and why? +What is making Tom feel demotivated? ## --answers-- @@ -51,3 +48,65 @@ Reflect on Tom's words about his work routine and how it makes him feel. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.54, + "finishTime": 8.3, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 8.52, + "finishTime": 12.82, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 13.32 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md index 23f853581be..b084d8c5f2d 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-45 --- - + # --description-- @@ -51,3 +48,47 @@ She understands how Tom feels ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 18.98 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 2.28, + "dialogue": { + "text": "I totally get that, Tom.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 2.78 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md index 95b626db8ab..18b3ede5a71 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-46 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working more hours than what is normally required, often beyond ### --feedback-- This word describes something that makes you feel very tired, like it's taking all your energy away. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 21.72 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.02, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.52 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md index 8e581dc301d..143b260cab0 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-47 --- - + # --description-- @@ -35,3 +32,47 @@ This word means managing or handling, especially when the situation is challengi ### --feedback-- This word, in the context of the office, refers to the social and power dynamics among coworkers and within the workplace environment. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 24.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.52, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.02 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md index ffd2e2364d2..5c132f9bd9c 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-48 --- - + # --description-- @@ -45,3 +42,47 @@ This word means making an effort to do something, often something challenging. ### --feedback-- This word is about doing tasks, especially with others to achieve a common goal or finish a project. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 25.02, + "finishTimestamp": 29.38 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.36, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.86 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md index eed7315d9fd..1c59d0c36f8 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-49 --- - + # --description-- @@ -51,3 +48,65 @@ Reflect on the specific aspect of work that Alice mentions she hates dealing wit ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 29.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.9, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 5.64, + "finishTime": 7.96, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 8.4, + "finishTime": 12.88, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 13.38 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md index 008029728ad..89639635494 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-50 --- - + # --description-- @@ -22,11 +19,11 @@ Tom is agreeing with Alice about a specific aspect of work that they find unplea ## --blanks-- -`dealing` +`Dealing` ### --feedback-- -This word means managing or handling something, often implying that it's not an easy or enjoyable task. +This word means managing or handling something, often implying that it's not an easy or enjoyable task. Don't forget the capitalization. --- @@ -35,3 +32,47 @@ This word means managing or handling something, often implying that it's not an ### --feedback-- In the context of an office, this word refers to the social and power dynamics among coworkers. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 30.08, + "finishTimestamp": 33.46 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md index 33c828a005d..eb1ae62b875 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-51 --- - + # --description-- @@ -45,3 +42,47 @@ This word is part of a expression that means something is making Tom upset or an ### --feedback-- This word is used when you're talking about experiencing something, like when you have a lot of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md index f182b582c7f..9e516b17b69 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-52 --- - + # --description-- @@ -51,3 +48,47 @@ He wishes for even more meetings ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md index 43b8ae258c9..f457d5cb4c2 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-53 --- - + # --description-- -Listen to the audio and answer the question. +Listen to the audio and fill in the blanks. # --fillInTheBlank-- @@ -51,3 +48,47 @@ This word means to discover or locate something. It's often used when you're loo ### --feedback-- This word is used to emphasize what is really true or happening. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md index e12e17d47ff..a0c2ef0d79a 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-54 --- - + # --description-- @@ -51,3 +48,47 @@ They take away time from working on projects ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md index 2bd6b036fb7..97dde90f3cb 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-55 --- - + # --description-- @@ -24,7 +21,7 @@ Alice: I hear you, Tom. Sitting in meetings for hours can be discouraging. ## --sentence-- -`_ in meetings for hours can be _.` +`I hear you, Tom. _ in meetings for hours can be _.` ## --blanks-- @@ -41,3 +38,47 @@ This word describes the action of being seated. It is capitalized. ### --feedback-- This word means something that makes you feel less confident or willing to continue. It ends in `ing`, showing it's describing the effect of the action. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md index da3c221a1f1..30aeb3ff460 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md @@ -5,12 +5,7 @@ challengeType: 19 dashedName: task-56 --- - + # --description-- @@ -53,3 +48,47 @@ Consider what Alice means by `discouraging` in the context of meetings. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md index c60324ba8d3..2957a5033ab 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-57 --- - + # --description-- @@ -43,3 +40,47 @@ This word is used to describe a large number of things grouped together. It's li ### --feedback-- This word refers to having different types or changes in something. It's the opposite of doing the same thing over and over. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 52.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 6.02, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.52 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md index 63d0a5a5643..cf49c33b69a 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-58 --- - + # --description-- @@ -35,3 +32,47 @@ This word means not using something valuable in a good or effective way. It's li ### --feedback-- This word refers to the ability to make new things or think of new ideas. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 53.24, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.34, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 3.84 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md index 540a3a77c0f..e189fc50af5 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-59 --- - + # --description-- @@ -51,3 +48,56 @@ Consider what Alice says directly annoys her versus how she feels about another ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md index ef09e4af19b..a5f87b483bd 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-60 --- - + # --description-- @@ -51,3 +48,56 @@ Think about whether meetings are mentioned in the context of wasting skills and ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md index fa7b1328561..7f182561d7f 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-61 --- - + # --description-- @@ -39,3 +36,47 @@ This auxiliary verb is used here to emphasize the verb that follows it, making t ### --feedback-- This adjective describes feelings of annoyance or irritation, often because of obstacles or difficulties. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 58.00 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.14, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 3.64 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md index e2e6ee3f118..d0f7a57efaa 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-62 --- - + # --description-- @@ -55,3 +52,47 @@ This word, when used twice with `and` in between, emphasizes the repetition of a ### --feedback-- This word describes something that reduces your desire or willingness to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 61.78 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "That does sound frustrating, Alice. Repeating the same tasks over and over can be demotivating.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md index 27d721f5a0a..bef09034af7 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-63 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to describe an emotional experience or sensation, in this case ### --feedback-- This word is the plural of `this`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md index 1721b02d9e4..c2eefbb7b7d 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-65 --- - + # --description-- @@ -51,3 +48,47 @@ For listening to him ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md index 80ad6cb9859..dc1a51e3b48 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-66 --- - + # --description-- @@ -51,3 +48,47 @@ This word means to tell others about your own experiences, thoughts, or feelings ### --feedback-- This word involves giving help or encouragement, showing you are there for someone. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md index 88359a9631c..ae0f2da0a0d 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-67 --- - + # --description-- @@ -51,3 +48,47 @@ The value of sharing feelings and supporting one another ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md index 01535bb27f7..e34ef923278 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-64 --- - + # --description-- @@ -44,3 +41,46 @@ This word is the middle part of the phrase used to casually introduce new inform This word completes the phrase, indicating a casual addition or shift in the conversation. +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md index abd512abbb8..fb7e5ccda2d 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md @@ -1,6 +1,5 @@ --- id: 65a351bd69b0b72d7ed24eb5 -videoId: nLDychdBwUg title: "Dialogue 3: Talking About Motivations to Pursue a Career" challengeType: 21 dashedName: dialogue-3-talking-about-motivations-to-pursue-a-career @@ -13,3 +12,212 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Lisa", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5, + "dialogue": { + "text": "Hey Lisa, what motivated you to choose a career in tech?", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 6, + "finishTime": 8.5, + "dialogue": { + "text": "One of my main motivations was the financial stability", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 8.8, + "finishTime": 10, + "dialogue": { + "text": "that tech jobs can provide.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 10.4, + "finishTime": 12.8, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 13.3, + "finishTime": 16.3, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 17.4, + "finishTime": 19.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 19.8, + "finishTime": 24, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 24, + "finishTime": 26, + "dialogue": { + "text": "and have different perspectives.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 26.8, + "finishTime": 29.2, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 29.2, + "finishTime": 32.1, + "dialogue": { + "text": "Another thing was the chance to be part of projects", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 32.1, + "finishTime": 34.2, + "dialogue": { + "text": "that push the limits of innovation and creativity.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 34.9, + "finishTime": 36, + "dialogue": { + "text": "I'm with you on that one.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 36.1, + "finishTime": 39.6, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 39.7, + "finishTime": 43.1, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 44.3, + "finishTime": 47.3, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 47.3, + "finishTime": 49.6, + "dialogue": { + "text": "and finding practical solutions is really thrilling.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 50.3, + "finishTime": 53, + "dialogue": { + "text": "Knowing that we solved problems is really exciting, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 53.4, + "finishTime": 56.7, + "dialogue": { + "text": "I hope we keep getting as much motivation from it as we can.", + "align": "left" + } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.2 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.7 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md index e165f760c08..23c160c642f 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-68 --- - + # --description-- @@ -18,7 +15,7 @@ Brian: Hey Lisa, what motivated you to choose a career in tech? ## --sentence-- -`Hey Lisa, what _ you to _ a career in tech?` +`Hey, Lisa, what _ you to _ a career in tech?` ## --blanks-- @@ -34,4 +31,48 @@ This word means something gave you a reason or desire to do something. It ends w ### --feedback-- -This verb is about making a decision between different options. +This verb is about making a decision between different options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md index 94e4ccd2b3e..3a96b95c93a 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-69 --- - + # --description-- @@ -51,3 +48,47 @@ What motivated her to pick a tech career ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md index 47d7700e414..9dc5f7bc32d 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-70 --- - + # --description-- @@ -37,3 +34,47 @@ The most important. ### --feedback-- Being steady, meaning you don't have to worry too much about it. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md index afed572b3be..22a27d6cb43 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-71 --- - + # --description-- @@ -35,3 +32,47 @@ This word is a past tense verb used to describe a state or condition in the past ### --feedback-- This verb means to give or supply something needed, like help, information, or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md index a5031402575..f006bbf44d1 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-72 --- - + # --description-- @@ -52,3 +48,71 @@ Reflect on Lisa's statement and whether travel is mentioned as a motivation. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.50 + }, + { + "character": "Lisa", + "opacity": 1, + "startTime": 5.50 + }, + { + "character": "Lisa", + "startTime": 5.82, + "finishTime": 10.02, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md index e71f55301a3..4b20a9bd448 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-73 --- - + # --description-- @@ -37,3 +34,47 @@ This verb means giving permission or making it possible to do something. this ve ### --feedback-- This noun describes the feeling of being certain about your abilities or something you're going to do. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 9.48, + "finishTimestamp": 11.90 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.42, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 3.92 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md index 4f8c68dfebb..ca8b0a42958 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-74 --- - + # --description-- @@ -39,3 +36,47 @@ This word refers to different areas of work or study. It's plural here because s ### --feedback-- This verb is used to talk about successfully reaching a goal, especially after putting in effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 12.16, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md index d0951b06bde..84aca093d52 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-75 --- - + # --description-- @@ -51,3 +48,65 @@ Lisa doesn't mention working less. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md index 1e5b8911585..9bd217faa04 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-76 --- - + # --description-- The words `much` and `many` are used to talk about quantity. @@ -52,3 +49,65 @@ Reflect on Lisa's statement about what makes tech jobs stand out for her. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md index 38a5ed3758e..013e56a7705 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-77 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to Brian's response to Lisa and fill in the missing word that shows he st ### --feedback-- This adverb is used to emphasize the truth or importance of a statement, showing strong agreement or belief. it ends with `ly`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 18.38 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.40, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.90 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md index 620135fd503..145afc143d8 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-78 --- - + # --description-- @@ -51,3 +48,47 @@ This word is used to describe different areas of study or work. This word is in ### --feedback-- These are different ways of viewing or thinking about something. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 18.80, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.20, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.70 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md index 5f88ce8ca38..56d23563f4a 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-79 --- - + # --description-- @@ -51,3 +48,56 @@ Consider Brian's interest in working across many fields versus concentrating on ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 3.82, + "finishTime": 10.02, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md index 9867dd455d5..36fa55aa8ae 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-80 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working together with others. Notice it ends with `-ing`, indica ### --feedback-- This adjective describes something that is thrilling or full of energy. It ends with `-ing`, showing a quality or state. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.62, + "finishTimestamp": 28.18 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md index 31ed219cb44..d126871e672 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-81 --- - + # --description-- @@ -45,3 +42,47 @@ TTo extend or go beyond usual limits or boundaries. It's often used to talk abou ### --feedback-- This noun refers to new ideas, products, or methods that improve something or solve problems. It's about coming up with new ways to do things. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 28.38, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md index 976777de56e..19ed243bc7e 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-82 --- - + # --description-- @@ -51,3 +48,56 @@ Consider whether Lisa's motivation is related to work environment or the nature ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.94 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md index cc4a931a4a1..9d83cc465d3 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-83 --- - + # --description-- @@ -52,3 +48,80 @@ He agrees with Lisa ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 34.98 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.45 + }, + { + "character": "Brian", + "opacity": 1, + "startTime": 8.45 + }, + { + "character": "Brian", + "startTime": 8.57, + "finishTime": 10.16, + "dialogue": { + "text": "I'm with you on that one.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.66 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md index 3c748ab456e..c9ec667c225 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-84 --- - + # --description-- @@ -37,3 +34,47 @@ This noun describes the ability to change or adapt easily according to different ### --feedback-- This word refers to the specific functions or positions that individuals can have within a group or organization. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 38.36 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.76 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md index f111304b929..566d8c5e7db 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-85 --- - + # --description-- @@ -20,7 +17,7 @@ Listen carefully and fill in the missing words about what tech roles make possib ## --sentence-- -`They _ us to balance our jobs with personal _ and hobbies.` +`I'm also interested in the flexibility that tech roles offer. They _ us to balance our jobs with personal _ and hobbies.` ## --blanks-- @@ -37,3 +34,56 @@ This verb means to make something possible or to give permission for something. ### --feedback-- This noun refers to things you enjoy doing, like hobbies or activities that catch your attention. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md index 0efe7ddf734..f5aab15821c 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-86 --- - + # --description-- @@ -55,3 +52,56 @@ Is Brian talking about traveling, or is he interested in something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md index 1828c2b24fd..f285c7e7f50 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-87 --- - + # --description-- @@ -45,3 +42,47 @@ This word means discovering or coming up with something, like an answer or solut ### --feedback-- This adjective means very exciting. It often describes something that makes your heart beat faster because it's so exciting or fun. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md index a2b77cc1c45..689b3e667de 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-88 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on the word `satisfaction` and if it suggests feeling tired. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md index 122529e8f39..fd8178da8fc 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-89 --- - + # --description-- @@ -43,3 +40,47 @@ This adjective describes something that is thrilling or causes great enthusiasm. ### --feedback-- This word means receiving or obtaining something. Here, it's also in the `-ing` form, indicating an ongoing action or process. Remember to use double `t`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md index f8bb1a273ee..a72f4990d84 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-90 --- - + # --description-- @@ -53,3 +50,47 @@ Brian talks about being excited by solving problems, not about where to find mot ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md index 93a91f9790d..f0a8796d57b 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md @@ -13,3 +13,221 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Bob", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sarah", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.6, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech?", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 5, + "finishTime": 7, + "dialogue": { + "text": "It's all those amazing gadgets!", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 7.8, + "finishTime": 9.6, + "dialogue": { + "text": "I can see your enthusiasm, Bob!", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 9.9, + "finishTime": 12.3, + "dialogue": { + "text": "Tell me, which tech gadgets are your absolute favorites?", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 13, + "finishTime": 16.2, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 16.3, + "finishTime": 18.9, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health,", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 19.2, + "finishTime": 22.7, + "dialogue": { + "text": "and even helps me stay organized with reminders and notifications.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 23.7, + "finishTime": 26, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 26, + "finishTime": 28.1, + "dialogue": { + "text": "The camera quality, the speed,", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 28.3, + "finishTime": 30.8, + "dialogue": { + "text": "and the number of apps available are what I like the most.", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 31.2, + "finishTime": 33.9, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 34.3, + "finishTime": 37.2, + "dialogue": { + "text": "Gadgets like these are transforming our daily lives.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 37.6, + "finishTime": 40.8, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 41.3, + "finishTime": 44, + "dialogue": { + "text": "I love capturing stunning aerial shots", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 44, + "finishTime": 46.5, + "dialogue": { + "text": "and exploring new angles for photography.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 47.7, + "finishTime": 50.3, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 50.7, + "finishTime": 52.7, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 52.7, + "finishTime": 54.5, + "dialogue": { + "text": "It's amazing how these innovations", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 54.5, + "finishTime": 56.8, + "dialogue": { + "text": "keep making our lives more interesting and connected.", + "align": "right" + } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.3 + }, + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.8 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md index 2f5b51c5efe..1c735765ddb 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-91 --- - + # --description-- @@ -47,3 +44,47 @@ This word is used to point out specific things that are being talked about, in t ### --feedback-- This word refers to small electronic devices or tools that are useful or interesting. It's often used to talk about cool tech items. It is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md index 06bb47f4e2f..7ddc748e75b 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-92 --- - + # --description-- @@ -51,3 +48,47 @@ The latest technology gadgets ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md index 746bfa4615b..96ed9a633c9 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-93 --- - + # --description-- @@ -27,3 +24,47 @@ Sarah: I can see your enthusiasm, Bob! ### --feedback-- This noun describes the feeling of being very excited or interested in something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 8.60 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 2.74, + "dialogue": { + "text": "I can see your enthusiasm, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.24 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md index a7eb6fcbfcb..4f55a749a61 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-94 --- - + # --description-- @@ -22,7 +19,7 @@ Sarah: I can see your enthusiasm, Bob! Tell me, which tech gadgets are your abso ## --sentence-- -`Tell me, _ tech gadgets are your _ favorites?` +`I can see your enthusiasm, Bob! Tell me, _ gadgets are your _ favorites?` ## --blanks-- @@ -39,3 +36,47 @@ This word asks for a specific choice or selection from a known group of items. ### --feedback-- This adjective emphasizes that the choice is the most complete or total among all options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 11.36 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.50, + "dialogue": { + "text": "I can see your enthusiasm, Bob. Tell me, which gadgets are your absolute favorites?", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.00 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md index 09bd788377d..9514f27cc60 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-95 --- - + # --description-- @@ -35,3 +32,47 @@ This preposition is used to show that something belongs to or is part of somethi ### --feedback-- This noun refers to a type of watch that has more features than just telling time, often including apps and internet connectivity. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 15.20 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.66 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md index b247dacc6dd..feadc88525d 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md @@ -5,10 +5,8 @@ challengeType: 22 dashedName: task-96 --- - + + # --description-- `To track` means to follow or monitor the progress, movement, or development of something or someone. @@ -44,3 +42,47 @@ This verb means to monitor or follow the course or progress of something, especi ### --feedback-- This verb means to make it easier or possible for someone to do something by offering services or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md index 99dcae91a0c..2c3332a8708 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-97 --- - + # --description-- @@ -45,3 +42,47 @@ This adjective means arranged in a systematic way, especially on a large scale. ### --feedback-- These are alerts or messages that prompt you to remember tasks or appointments. This word ends with `s`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md index 4d36b7b2989..49fbdc264ee 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-98 --- - + # --description-- @@ -51,3 +48,56 @@ It keeps him connected, tracks his health, and helps him stay organized ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.32, + "finishTime": 10.70, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 11.20 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md index 7185d037ed7..2d1e897054c 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-99 --- - + # --description-- @@ -35,3 +32,47 @@ This word is capitalized and in plural form. ### --feedback-- This word describes advanced mobile phones with extensive computing capabilities and connectivity. It is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 25.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.98 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md index 1f660afcb03..81e873d902e 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-100 --- - + # --description-- @@ -53,3 +50,47 @@ This adjective means something can be accessed or used, like apps in an app stor ### --feedback-- This word is used to indicate the highest degree or the greatest amount of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 25.24, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.60, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.10 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md index 6998dd4ffa5..1e063e1befc 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-101 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on whether design is a factor in Sarah's stated preferences. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.56, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 3.68, + "finishTime": 8.08, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 8.58 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md index dac54e85492..92b3b88cee4 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-102 --- - + # --description-- @@ -43,3 +40,47 @@ This verb means causing a significant change or improvement in something. This w ### --feedback-- This adjective refers to something that happens every day or is part of everyday life. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md index 66cda46110d..6e56479dc8d 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-103 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Bob mentions radio as a factor in transforming daily life. ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md index ec96099aa49..93b5cc92a66 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-104 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to talk about the current period of time or the present days. ### --feedback-- This noun refers to remote-controlled flying machines, often used for photography, racing, or recreation. This word is capitalized. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 39.78 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.20, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.70 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md index 2eb13bfcb4b..7bdc1f302f5 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-105 --- - + # --description-- @@ -43,3 +40,47 @@ This verb involves examining or investigating something in order to learn more a ### --feedback-- This noun refers to the art, practice, or job of taking pictures with a camera, capturing moments, and expressions. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md index 08e3ab9b847..95aa8e526fc 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-106 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective describes something extremely beautiful or impressive. ### --feedback-- In photography, this noun means photographs or the act of taking a photograph. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md index 1b7d3770f1d..f8e77d3a9fe 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-107 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective refers to something related to the air or happening in the sky. ### --feedback-- This noun refers to the specific viewpoints or positions from which photos are taken. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md index c172cb36554..cf2a562eb4c 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-108 --- - + # --description-- @@ -51,3 +48,56 @@ They allow for stunning aerial photography ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.2, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.78, + "finishTime": 9.98, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 10.48 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md index a67e640bd01..64e3aa577d5 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-109 --- - + # --description-- @@ -35,3 +32,47 @@ This adjective in the expression means allowing access, passage, or a view throu ### --feedback-- This noun refers to things that may happen or be the case in the future, often exciting or beneficial opportunities. it is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.48, + "finishTimestamp": 49.32 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.84, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 4.34 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md index a7c5acbe452..9a5e4ff7dc6 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-110 --- - + # --description-- @@ -35,3 +32,47 @@ This noun describes a strong feeling of enthusiasm or excitement for something o ### --feedback-- In this context, this adjective means that a feeling, especially a positive one like enthusiasm, can spread from one person to others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 49.52, + "finishTimestamp": 51.74 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.22, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.72 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md index 0578945ebcc..c64025643be 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-111 --- - + # --description-- @@ -51,3 +48,47 @@ This adjective describes something that arouses curiosity or is enjoyable and en ### --feedback-- This adjective means being in touch with others or having easy access to information, especially through technology. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 51.94, + "finishTimestamp": 56.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.10, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 5.60 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md index bc02e1710e1..fe30597a170 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-112 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on the enthusiasm and positivity in Sarah's statement. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.28, + "finishTimestamp": 55.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 6.26, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob. Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 6.46, + "finishTime": 10.36, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 10.86 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md index ebba772a320..20eaca5ac90 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md @@ -1,6 +1,5 @@ --- id: 65a533f54a5afeff6c6bb996 -videoId: nLDychdBwUg title: "Dialogue 5: Discussing Open-source Software" challengeType: 21 dashedName: dialogue-5-discussing-open-source-software @@ -13,3 +12,284 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Tom", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sophie", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.5, + "dialogue": { + "text": "Hey, Sophie, what motivates you", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 3.8, + "finishTime": 6.9, + "dialogue": { + "text": "to work on open-source software projects in your free time?", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 7.8, + "finishTime": 10.2, + "dialogue": { + "text": "Well, I love contributing to open-source projects!", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 10.5, + "finishTime": 13, + "dialogue": { + "text": "I really like the sense of community and collaboration.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 13.5, + "finishTime": 15.4, + "dialogue": { + "text": "It's incredible how people from around the world", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 15.4, + "finishTime": 17.5, + "dialogue": { + "text": "come together to create something amazing.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 18.2, + "finishTime": 20.4, + "dialogue": { + "text": "Yeah. I checked out some open-source projects,", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 20.5, + "finishTime": 23.1, + "dialogue": { + "text": "but I admit that I have problems with the amount of time", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 23.1, + "finishTime": 24.3, + "dialogue": { + "text": "it can take to contribute.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 24.7, + "finishTime": 27.1, + "dialogue": { + "text": "Sometimes, it can be so time-consuming.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 27.1, + "finishTime": 29.7, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 29.9, + "finishTime": 33.3, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 33.8, + "finishTime": 36.5, + "dialogue": { + "text": "Open source is all about transparency and accessibility,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 36.5, + "finishTime": 38.4, + "dialogue": { + "text": "and that's something I truly believe in.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 39, + "finishTime": 42.2, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 42.7, + "finishTime": 45.7, + "dialogue": { + "text": "For me, I like the idea of practicing my skills", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 45.7, + "finishTime": 48, + "dialogue": { + "text": "and getting recognition for my contributions.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 48.5, + "finishTime": 51.4, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 52.4, + "finishTime": 56, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 56.4, + "finishTime": 58, + "dialogue": { + "text": "there isn't much you can do to save it.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 58.4, + "finishTime": 61.4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 62.2, + "finishTime": 65.2, + "dialogue": { + "text": "That's true. The sustainability of open-source projects", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 65.2, + "finishTime": 67.5, + "dialogue": { + "text": "is something I'm growing to appreciate more.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 67.8, + "finishTime": 69.2, + "dialogue": { + "text": "Thanks for sharing your motivations.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 69.8, + "finishTime": 71.7, + "dialogue": { + "text": "I think I'll see if I can find a project", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 71.7, + "finishTime": 72.8, + "dialogue": { + "text": "to dedicate some spare time to.", + "align": "left" + } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 73.3 + }, + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 73.8 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md index a463dcea5d0..ee5d378ba03 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-113 --- - + # --description-- @@ -37,3 +34,47 @@ This preposition is used to indicate involvement or engagement in a particular a ### --feedback-- This part of the term refers to the origin or starting point, in this case, indicating that the software's foundational code is open and accessible to all. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md index 2d227ef6fe5..1e409d23632 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-114 --- - + # --description-- @@ -51,3 +48,47 @@ Think about whether Tom is asking about skills or the reasons behind an activity ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md index ab28bfe2622..395d2fa3522 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-115 --- - + # --description-- @@ -20,7 +17,7 @@ Sophie: Well, I love contributing to open-source projects! I really like the sen ## --sentence-- -`I really like the sense of _ and _.` +`Well, I love contributing to open-source projects! I really like the sense of _ and _.` ## --blanks-- @@ -37,3 +34,47 @@ Describes a group of people who share common interests or values, especially in ### --feedback-- Refers to the act of working with someone to produce or create something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md index c9e678c193b..e321ce0b307 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-116 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Sophie's enjoyment comes from personal recognition or somethi ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md index 7b9101449a3..6a2c024d0c1 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-117 --- - + # --description-- @@ -45,3 +42,47 @@ Refers to the earth or the globe. ### --feedback-- Indicates the act of joining with others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md index d2ba30725da..3917f0f08f3 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-118 --- - + # --description-- @@ -51,3 +48,47 @@ Sophie talks about working as a group. Is it about being famous or doing somethi ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md index a0b608d8342..a41f1bfc8cb 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-119 --- - + # --description-- @@ -20,7 +17,7 @@ Tom: Yeah. I checked some open-source projects, but I admit that I have problems ## --sentence-- -`Yeah. I checked some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` +`Yeah, I checked out some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` ## --blanks-- @@ -37,3 +34,47 @@ This verb means to confess or acknowledge something, often reluctantly. ### --feedback-- This noun is used to describe the quantity or measure of something, in this case, referring to time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 23.34 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.28, + "dialogue": { + "text": "Yeah, I checked out some open-source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.78 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md index 6bcebcf1558..64acf0261ac 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-120 --- - + # --description-- @@ -18,7 +15,7 @@ Tom "Sometimes, it can be so time-consuming." ## --sentence-- -`Sometimes, it can be _ time-_.` +`Sometimes it can be _ time-_.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to emphasize the degree of something, in this case, how much t ### --feedback-- This word describes activities that use up a lot of time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 23.52, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.64, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.14 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md index 2bbaf6f322f..a2ad29fdb26 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-121 --- - + # --description-- @@ -51,3 +48,56 @@ Think about if Tom says the projects are easy or something else. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Yeah, I checked out some open source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 7.46, + "finishTime": 10.10, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 10.60 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md index 26975fa42d5..52145efc9dc 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-122 --- - + # --description-- @@ -21,7 +18,7 @@ For example, if you say: `I decided to learn a new language and practice every d ## --sentence-- -`It can _ a _.` +`I understand, Tom. It can _ a _.` ## --blanks-- @@ -38,3 +35,47 @@ This word is used to talk about something being true or existing. ### --feedback-- This word means a promise to do something or give your time to it, showing you are ready to work hard and keep your word. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 28.72 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md index 4232fcd5dbb..10d1d55dd1f 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-123 --- - + # --description-- @@ -35,3 +32,47 @@ This verb, in this context, means to tolerate or bear, especially when talking a ### --feedback-- This adjective describes something not open or accessible to the general public or kept for the use of a specific person or group. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md index 25acc5b187b..4920280d317 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-124 --- - + # --description-- @@ -35,3 +32,47 @@ This word, ending in `-ing`, means to observe or witness something happening.. ### --feedback-- Also ending in `-ing`, this word is used to describe the state or condition of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md index e4878ae4f6c..feb206c8d3b 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-125 --- - + # --description-- @@ -37,3 +34,51 @@ This word means being open and clear about things. It ends with `-y`, showing it ### --feedback-- This word is about making things easy for everyone to use or get. It ends with `-ity`, showing it's about the state of being accessible. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 32.52, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 5.74, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.24 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md index 2e6e266c6ab..b1b1c1ca42c 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-126 --- - + # --description-- -Sophie expresses her thoughts on open-source projects.. +Sophie expresses her thoughts on open-source projects. # --question-- @@ -51,3 +48,56 @@ Reflect on Sophie's belief in open source and its benefits. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 7.16, + "dialogue": { + "text": "I understand, Tom. It can be a commitment, but I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.56, + "finishTime": 12.10, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 12.60 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md index 9ef306c9252..e6c5fe030c7 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-127 --- - + # --description-- @@ -35,3 +32,51 @@ This noun refers to the quality of being open and clear, especially about proces ### --feedback-- This noun describes something that provides a reason or incentive for someone to act in a certain way or to put in more effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 41.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md index bbaba54e9e1..e05f1982063 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-128 --- - + # --description-- @@ -37,3 +34,51 @@ This verb means to perform an activity or exercise repeatedly or regularly in or ### --feedback-- This noun refers to the action or process of acknowledging someone's efforts, achievements, or qualities. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 41.5, + "finishTimestamp": 47.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.62, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.12 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md index a821137445a..5d15ffd7545 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-129 --- - + # --description-- @@ -35,3 +32,51 @@ This adjective is used to describe something that is very good or impressive. ### --feedback-- This adjective means having the ability, power, or qualities necessary to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 47.54, + "finishTimestamp": 50.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.9, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.4 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md index 76ee25756a6..045d8463245 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-130 --- - + # --description-- @@ -51,3 +48,69 @@ Reflect on whether Tom's attraction to open-source is about tight schedules. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 50.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.42, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.88, + "finishTime": 10.2, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 10.72, + "finishTime": 13.62, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 14.12 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md index f47924c5a21..763fa02b646 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-131 --- - + # --description-- @@ -18,7 +15,7 @@ Sophie: Also, when software becomes obsolete because it's no longer maintained, ## --sentence-- -`Also, when software becomes _, there isn't _ you can do to _ it.` +`Also, when software becomes _ because it's no longer maintained, there isn't _ you can do to _ it.` ## --blanks-- @@ -43,3 +40,51 @@ This word is used to indicate a small amount or degree; not a lot. ### --feedback-- This verb means to keep safe or rescue from harm or danger, in this context, to try and make something usable again. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md index 27b0dbb43cf..a187bb8b293 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-132 --- - + # --description-- @@ -43,3 +40,51 @@ Something that once was true or possible is not the case anymore. ### --feedback-- This contraction of `is not` is used to express the negation of the statement that follows, indicating a limitation or impossibility. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md index 8941733f8b9..ca97fa188f9 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-133 --- - + # --description-- @@ -51,3 +48,51 @@ It can't be used effectively anymore ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md index e225360b121..baadc6b07e8 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-134 --- - + # --description-- @@ -18,7 +15,7 @@ AUDIO REFERENCE: ## --sentence-- -`With open-_, there's always a _ for continuous improvement.` +`With open _, there's always a _ for continuous improvement.` ## --blanks-- @@ -35,3 +32,51 @@ Refers to a model where the source code is available for anyone to see, modify, ### --feedback-- This noun means an opportunity or possibility for something to happen or be done, especially something desirable. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md index 410699942ed..15c83340f6f 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-135 --- - + # --description-- @@ -35,3 +32,51 @@ It indicates an ongoing, unending process of enhancement or development. ### --feedback-- It refers to the act of making something better, more effective, or more efficient. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md index a8c886124e7..7718697bd96 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-137 --- - + # --description-- @@ -27,3 +24,51 @@ Tom: The sustainability of open-source projects is something I'm growing to appr ### --feedback-- It refers to the ongoing development of open-source projects over the long term. it ends with `-y`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md index dcc88c43208..d6ae5f89d89 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-138 --- - + # --description-- -`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time,` means they might not like them at first, but after some timethey start to like them more. +`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time` means they might not like them at first, but after some timethey start to like them more. # --fillInTheBlank-- @@ -34,4 +31,52 @@ This word means being able to continue over time in a good way. ### --feedback-- -Starting to like something more as you understand it better. +Starting to like something more as you understand it better. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md index ecd1d6e7c95..abc9cf2415f 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-139 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on Tom's statement about sustainability and appreciation, not complexity ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md index a6a32b631e8..87c40eaf830 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-140 --- - + # --description-- @@ -47,3 +44,51 @@ This verb means to discover or locate something after searching for it. ### --feedback-- Describes time that is available to use as you wish, not taken up by work or other obligations. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md index bd2fddb1bb4..52d0740b1db 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-141 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on whether Tom's interest is in language learning or engaging in a proje ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md index ea7dbd6dc1e..05dc28f6ddc 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-1 --- - + # --description-- @@ -18,7 +15,7 @@ Listen to what Brian asks Maria. Pay attention to the verbs he uses. ## --sentence-- -`Hey Maria, I _ a question. Do you know what _ the team?` +`Maria, I _ a question. Do you know what _ the team?` ## --blanks-- @@ -35,3 +32,47 @@ This verb is used when someone is in possession of something or wants to express ### --feedback-- This word means to give someone a reason to do something. This verb in conjugated in the third person. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 3.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.02 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md index d39e86e67e9..ef6b246a2e4 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-2 --- - + # --description-- @@ -39,3 +36,47 @@ This word is used to indicate the reason or cause of something. It is conjugated ### --feedback-- It ends with `-ed` because it's an adjective that comes from a verb. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 3.92, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.50, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.00 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md index 5c39c1c7312..050241fa5e6 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-3 --- - + # --description-- @@ -20,7 +17,7 @@ Listen to the audio and complete the sentence. ## --sentence-- -`Hey Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` +`Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` ## --blanks-- @@ -37,3 +34,56 @@ Think about the word that means to give someone a reason to do something right n ### --feedback-- This word describes how someone feels when they have a reason or desire to do something. This word ends with `-ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md index 4a6aa89ed04..90a6bbe82b3 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md @@ -5,20 +5,17 @@ challengeType: 19 dashedName: task-4 --- - + # --description-- -In the dialogue, Brian asks three questions but they are all connected. +In the dialogue, Brian asks a couple of related questions. # --question-- ## --text-- -`What is Brian asking Maria about?` +What is Brian asking Maria about? ## --answers-- @@ -51,3 +48,56 @@ The conversation is centered around motivation, not the physical location of whe ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md index 3e923e63532..f725307b614 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-21 --- - + # --description-- @@ -36,3 +33,46 @@ This word means working together with others on a project or task. It ends with This word means thinking of many ideas together with a group of people. It ends with `-ing`. +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md index 1c4102ed1d3..2522ee2b5e1 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-22 --- - + # --description-- @@ -51,3 +48,47 @@ Maria refers to her creative team, not her friends, as her collaborators. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.28 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.28 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md index c3f28429a68..ab0e4646869 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-23 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to create or produce something, especially ideas or solutions. ### --feedback-- This word refers to ideas or plans that are used in thinking, discussion, or creating something new. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 41.84, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.78, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.28 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md index c2510030f2c..8795bdf6d10 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-24 --- - + # --description-- @@ -51,3 +48,56 @@ Collaborating with the creative team ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.70, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.14, + "finishTime": 7.92, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 8.42 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md index 3c6ee35860c..b801e7efce9 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-25 --- - + # --description-- @@ -35,3 +32,47 @@ This word means working together with others to achieve a goal. This word is cap ### --feedback-- This word refers to the use of imagination or original ideas to create something. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 48.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.22 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md index a9680b0824a..75c938c595f 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-27 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to find something or someone without planning to, especially pro ### --feedback-- This word is used for problems with machines or computers that need special knowledge to understand or fix. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md index 5ee0b89f981..89a97ac83d7 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-29 --- - + # --description-- @@ -27,3 +24,47 @@ When something is `frustrating`, it makes you feel upset or annoyed because you ### --feedback-- This word is used when something makes you feel upset or annoyed because it is difficult or impossible to deal with. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 53.02, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.50, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.00 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md index 1f9e7b21387..02733f0f66c 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-30 --- - + # --description-- @@ -51,3 +48,65 @@ Does having many ideas make Brian frustrated, or is it something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 5.02, + "finishTime": 9.34, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 9.74, + "finishTime": 11.24, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 11.74 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md index 3dddb17e8ef..47e9d5633b4 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-31 --- - + # --description-- @@ -35,3 +32,47 @@ This word means little problems with things like computers or apps. When there a ### --feedback-- This word means to make an effort to do something, especially when it's hard. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md index fe21921444c..ce9ced73581 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-33 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether taking a break is mentioned as a way to deal with glitches. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md index 69d94c303e5..7c44898f823 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-34 --- - + # --description-- @@ -37,3 +34,47 @@ This word means being very excited or eager about something. It's like when you ### --feedback-- This word means finding a way to fix a problem. It's like when you figure out the answer to a difficult question. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.76, + "finishTimestamp": 65.66 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.90, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.40 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md index 0365cb0e9f0..17d79cd22ec 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md @@ -6,10 +6,7 @@ dashedName: task-36 --- - + # --description-- @@ -52,3 +49,56 @@ Reflect on whether the speed of solving problems is what Maria highlights as mot ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.96, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.7, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.16, + "finishTime": 8.84, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 9.34 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md index 7525fdadd5f..39df7aceed5 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-37 --- - + # --description-- @@ -18,7 +15,7 @@ In this part of the conversation, Brian talks about how the talk made him feel a ## --sentence-- -`Yeah. Wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` +`Yeah, wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` ## --blanks-- @@ -35,3 +32,47 @@ This word means something that gives you energy or a reason to do something. It' ### --feedback-- This word means giving something that you have to others. It's like when you tell someone your ideas or feelings. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 70.38, + "finishTimestamp": 76.10 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 6.72, + "dialogue": { + "text": "Yeah, wow. You know what? This was a really motivating talk. Thanks for sharing your thoughts.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.22 + } + ] +} +``` diff --git a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md index 6bb2b29cd3b..b1bcee11103 100644 --- a/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md +++ b/curriculum/challenges/arabic/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-136 --- - + # --description-- @@ -51,3 +48,60 @@ Reflect on the connection between updates and user experience Sophie suggests. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.02, + "finishTime": 10.02, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md index 7e3e938d4cd..0edc3f654c8 100644 --- a/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md +++ b/curriculum/challenges/chinese-traditional/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md @@ -26,7 +26,7 @@ HTML5 的 `audio` 標籤用於呈現音頻內容或音頻流,它也具有語 # --instructions-- -是時候讓 Camper Cat 休息一下,並與朋友 Zersiax (@zersiax) 會面了。 Zersiax 是一位屏幕閱讀器用戶,同時也是無障礙設計的高手。 爲了體驗屏幕閱讀器的朗讀效果,請在 `p` 元素之後添加一個 `audio` 元素, 具有 `controls` 屬性。 然後在 `audio` 標籤裏面放一個帶有 `src` 屬性的 `source` 標籤,屬性值爲 `https://s3.amazonaws.com/freecodecamp/screen-reader.mp3`。將 `type` 屬性設置爲 `"audio/mpeg"`. +是時候讓 Camper Cat 休息一下,並與朋友 Zersiax (@zersiax) 會面了。 Zersiax 是一位屏幕閱讀器用戶,同時也是無障礙設計的高手。 爲了體驗屏幕閱讀器的朗讀效果,請在 `p` 元素之後添加一個 `audio` 元素, 具有 `controls` 屬性。 Then place a `source` element inside the `audio` tags with the `src` attribute set to `https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3` and `type` attribute set to `"audio/mpeg"`. **注意:** 音頻片段的播放速度可能會快到令我們難以理解,但是對於屏幕閱讀器用戶來說這是正常速度。 @@ -70,7 +70,7 @@ assert($('audio').children('source').length === 1); ```js assert( $('source').attr('src') === - 'https://s3.amazonaws.com/freecodecamp/screen-reader.mp3' + 'https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3' ); ``` @@ -108,7 +108,7 @@ assert($('source').attr('type') === 'audio/mpeg');

A sound clip of Zersiax's screen reader in action.

diff --git a/curriculum/challenges/chinese-traditional/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md b/curriculum/challenges/chinese-traditional/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md index 591775e1d46..4a3f2016f70 100644 --- a/curriculum/challenges/chinese-traditional/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md +++ b/curriculum/challenges/chinese-traditional/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md @@ -93,7 +93,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -186,7 +186,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/chinese-traditional/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md b/curriculum/challenges/chinese-traditional/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md index 17e65b9d8b0..041d30f30db 100644 --- a/curriculum/challenges/chinese-traditional/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md +++ b/curriculum/challenges/chinese-traditional/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md @@ -102,7 +102,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -198,7 +198,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/chinese-traditional/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md b/curriculum/challenges/chinese-traditional/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md index 1d1961c0f1a..91b8d499ce0 100644 --- a/curriculum/challenges/chinese-traditional/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md +++ b/curriculum/challenges/chinese-traditional/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md @@ -95,7 +95,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -190,7 +190,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/chinese-traditional/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md b/curriculum/challenges/chinese-traditional/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md index af58c4227e8..cadc779b8cd 100644 --- a/curriculum/challenges/chinese-traditional/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md +++ b/curriculum/challenges/chinese-traditional/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md @@ -98,7 +98,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -192,7 +192,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md new file mode 100644 index 00000000000..47a2bcd6988 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md @@ -0,0 +1,887 @@ +--- +id: 5e44413e903586ffb414c94e +title: Build a Budget App Project +challengeType: 23 +forumTopicId: 462361 +dashedName: build-a-budget-app-project +--- + +# --description-- + +Complete the `Category` class. It should be able to instantiate objects based on different budget categories like *food*, *clothing*, and *entertainment*. When objects are created, they are passed in the name of the category. The class should have an instance variable called `ledger` that is a list. The class should also contain the following methods: + +- A `deposit` method that accepts an amount and description. If no description is given, it should default to an empty string. The method should append an object to the ledger list in the form of `{"amount": amount, "description": description}`. +- A `withdraw` method that is similar to the `deposit` method, but the amount passed in should be stored in the ledger as a negative number. If there are not enough funds, nothing should be added to the ledger. This method should return `True` if the withdrawal took place, and `False` otherwise. +- A `get_balance` method that returns the current balance of the budget category based on the deposits and withdrawals that have occurred. +- A `transfer` method that accepts an amount and another budget category as arguments. The method should add a withdrawal with the amount and the description "Transfer to [Destination Budget Category]". The method should then add a deposit to the other budget category with the amount and the description "Transfer from [Source Budget Category]". If there are not enough funds, nothing should be added to either ledgers. This method should return `True` if the transfer took place, and `False` otherwise. +- A `check_funds` method that accepts an amount as an argument. It returns `False` if the amount is greater than the balance of the budget category and returns `True` otherwise. This method should be used by both the `withdraw` method and `transfer` method. + +When the budget object is printed it should display: + +- A title line of 30 characters where the name of the category is centered in a line of `*` characters. +- A list of the items in the ledger. Each line should show the description and amount. The first 23 characters of the description should be displayed, then the amount. The amount should be right aligned, contain two decimal places, and display a maximum of 7 characters. +- A line displaying the category total. + +Here is an example usage: + +```py +food = Category("Food") +food.deposit(1000, "deposit") +food.withdraw(10.15, "groceries") +food.withdraw(15.89, "restaurant and more food for dessert") +clothing = Category("Clothing") +food.transfer(50, clothing) +print(food) +``` + +And here is an example of the output: + +```bash +*************Food************* +initial deposit 1000.00 +groceries -10.15 +restaurant and more foo -15.89 +Transfer to Clothing -50.00 +Total: 923.96 +``` + +Besides the `Category` class, create a function (outside of the class) called `create_spend_chart` that takes a list of categories as an argument. It should return a string that is a bar chart. + +The chart should show the percentage spent in each category passed in to the function. The percentage spent should be calculated only with withdrawals and not with deposits. Down the left side of the chart should be labels 0 - 100. The "bars" in the bar chart should be made out of the "o" character. The height of each bar should be rounded down to the nearest 10. The horizontal line below the bars should go two spaces past the final bar. Each category name should be written vertically below the bar. There should be a title at the top that says "Percentage spent by category". + +This function will be tested with up to four categories. + +Look at the example output below very closely and make sure the spacing of the output matches the example exactly. + +```bash +Percentage spent by category +100| + 90| + 80| + 70| + 60| o + 50| o + 40| o + 30| o + 20| o o + 10| o o o + 0| o o o + ---------- + F C A + o l u + o o t + d t o + h + i + n + g +``` + +# --hints-- + +The `deposit` method should create a specific object in the ledger instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit(self): + self.food.deposit(900, "deposit") + actual = self.food.ledger[0] + expected = {"amount": 900, "description": "deposit"} + self.assertEqual(actual, expected, 'Expected "deposit" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `deposit` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit_no_description(self): + self.food.deposit(45.56) + actual = self.food.ledger[0] + expected = {"amount": 45.56, "description": ""} + self.assertEqual(actual, expected, 'Expected calling "deposit" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should create a specific object in the `ledger` instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": "milk, cereal, eggs, bacon, bread"} + self.assertEqual(actual, expected, 'Expected "withdraw" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `withdraw` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": ""} + self.assertEqual(actual, expected, 'Expected "withdraw" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `True` if the withdrawal took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + self.assertEqual(good_withdraw, True, 'Expected "withdraw" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `food.deposit(900, "deposit")` and `food.withdraw(45.67, "milk, cereal, eggs, bacon, bread")` should return a balance of `854.33`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_get_balance(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.get_balance() + expected = 854.33 + self.assertEqual(actual, expected, 'Expected balance to be 854.33') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `transfer` method on a category object should create a specific ledger item in that category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.food.ledger[2] + expected = {"amount": -transfer_amount, "description": "Transfer to Entertainment"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `True` if the transfer took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + self.assertEqual(good_transfer, True, 'Expected "transfer" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `transfer` on a category object should reduce the balance in the category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + food_balance_before = self.food.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + food_balance_after = self.food.get_balance() + self.assertEqual(food_balance_before - food_balance_after, transfer_amount, 'Expected "transfer" method to reduce balance in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should increase the balance of the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + entertainment_balance_before = self.entertainment.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + entertainment_balance_after = self.entertainment.get_balance() + self.assertEqual(entertainment_balance_after - entertainment_balance_before, transfer_amount, 'Expected "transfer" method to increase balance in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should create a specific ledger item in the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.entertainment.ledger[0] + expected = {"amount": transfer_amount, "description": "Transfer from Food"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `False` if the amount passed to the method is greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(20) + expected = False + self.assertEqual(actual, expected, 'Expected "check_funds" method to be False') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `True` if the amount passed to the method is not greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(10) + expected = True + self.assertEqual(actual, expected, 'Expected "check_funds" method to be True') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `False` if the withdrawal didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_funds(self): + self.food.deposit(100, "deposit") + good_withdraw = self.food.withdraw(100.10) + self.assertEqual(good_withdraw, False, 'Expected "withdraw" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `False` if the transfer didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer_no_funds(self): + self.food.deposit(100, "deposit") + good_transfer = self.food.transfer(200, self.entertainment) + self.assertEqual(good_transfer, False, 'Expected "transfer" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Printing a `Category` instance should give a different string representation of the object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_to_string(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + self.food.transfer(20, self.entertainment) + actual = str(self.food) + expected = "*************Food*************\\ndeposit 900.00\\nmilk, cereal, eggs, bac -45.67\\nTransfer to Entertainme -20.00\\nTotal: 834.33" + self.assertEqual(actual, expected, 'Expected different string representation of object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +` + const out = runPython(testCode); + assert(out); + } +}) +``` + +`create_spend_chart` should print a different chart representation. Check that all spacing is exact. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + self.business = budget.Category("Business") + + def test_create_spend_chart(self): + self.food.deposit(900, "deposit") + self.entertainment.deposit(900, "deposit") + self.business.deposit(900, "deposit") + self.food.withdraw(105.55) + self.entertainment.withdraw(33.40) + self.business.withdraw(10.99) + actual = budget.create_spend_chart([self.business, self.food, self.entertainment]) + expected = "Percentage spent by category\\n100| \\n 90| \\n 80| \\n 70| o \\n 60| o \\n 50| o \\n 40| o \\n 30| o \\n 20| o o \\n 10| o o \\n 0| o o o \\n ----------\\n B F E \\n u o n \\n s o t \\n i d e \\n n r \\n e t \\n s a \\n s i \\n n \\n m \\n e \\n n \\n t " + self.assertEqual(actual, expected, 'Expected different chart representation. Check that all spacing is exact.') +`); + + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Category: + pass + +def create_spend_chart(categories): + pass +``` + +# --solutions-- + +```py +class Category: + + def __init__(self, name): + self.name = name + self.ledger = [] + self.balance = 0 + self.spent = 0 + + def __str__(self): + first_line = f'{self.name.center(30, "*")}\n' + lines = '' + total = f'Total: {format(self.balance, ".2f")}' + + for n in range(len(self.ledger)): + descr = self.ledger[n]["description"][:23] + am = format(float(self.ledger[n]["amount"]), ".2f")[:7] + lines = lines + f'{descr:<23}{am:>7}\n' + + return f'{first_line}{lines}{total}' + + def deposit(self, amount, description=''): + self.ledger.append({ + 'amount': float(amount), + 'description': description + }) + self.balance = self.balance + float(amount) + + def withdraw(self, amount, description=''): + if self.check_funds(amount): + self.ledger.append({ + 'amount': -float(amount), + 'description': description + }) + self.balance = self.balance - float(amount) + self.spent = self.spent + float(amount) + return True + else: + return False + + def get_balance(self): + return self.balance + + def transfer(self, amount, category): + if self.check_funds(amount): + # withdraw + self.ledger.append({ + 'amount': -float(amount), + 'description': f'Transfer to {category.name}' + }) + self.balance = self.balance - float(amount) + # deposit + category.deposit(amount, f'Transfer from {self.name}') + + return True + else: + return False + + def check_funds(self, amount): + if float(amount) > self.balance: + return False + else: + return True + + +def create_spend_chart(categories): + total_expenses = 0 + obj = {} + col1 = [] + str = [] + final_str = 'Percentage spent by category\n' + label_max_length = 0 + label_strings = [] + + for category in categories: + total_expenses = total_expenses + category.spent + obj[category.name] = {'expenses': category.spent} + obj[category.name]['label'] = list(category.name) + if len(obj[category.name]['label']) > label_max_length: + label_max_length = len(obj[category.name]['label']) + + for category in categories: + obj[category.name]['percent'] = ( + (category.spent / total_expenses * 100) // 10) * 10 + obj[category.name]['column'] = [] + for i in range(0, 110, 10): + if obj[category.name]['percent'] >= i: + obj[category.name]['column'].insert(0, 'o') + else: + obj[category.name]['column'].insert(0, ' ') + + for i in range(0, 110, 10): + col1.insert(0, i) + + for i in range(11): + str.append("") + for key in obj: + str[i] += (f'{obj[key]["column"][i]} ') + final_str += f'{col1[i]:>3}| {str[i]}\n' + final_str += f' {"-"*(1+3*len(obj))}\n ' + + for i in range(label_max_length): + label_strings.append(' ') + for k in obj: + if len(obj[k]['label']) < label_max_length: + obj[k]['label'].extend( + f'{" "*(label_max_length-len(obj[k]["label"]))}') + + label_strings[i] += f'{obj[k]["label"][i]} ' + if i < label_max_length - 1: + label_strings[i] += '\n ' + final_str += label_strings[i] + + print(final_str) + return (final_str) + +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md new file mode 100644 index 00000000000..ef719adc3a7 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md @@ -0,0 +1,869 @@ +--- +id: 5e444147903586ffb414c94f +title: Build a Polygon Area Calculator Project +challengeType: 23 +forumTopicId: 462363 +dashedName: build-a-polygon-area-calculator-project +--- + +# --description-- + +In this project you will use object oriented programming to create a `Rectangle` class and a `Square` class. The `Square` class should be a subclass of `Rectangle`, and inherit its methods and attributes. + +## Rectangle class + +When a Rectangle object is created, it should be initialized with `width` and `height` attributes. The class should also contain the following methods: + +- `set_width` +- `set_height` +- `get_area`: Returns area (`width * height`) +- `get_perimeter`: Returns perimeter (`2 * width + 2 * height`) +- `get_diagonal`: Returns diagonal (`(width ** 2 + height ** 2) ** .5`) +- `get_picture`: Returns a string that represents the shape using lines of "\*". The number of lines should be equal to the height and the number of "\*" in each line should be equal to the width. There should be a new line (`\n`) at the end of each line. If the width or height is larger than 50, this should return the string: "Too big for picture.". +- `get_amount_inside`: Takes another shape (square or rectangle) as an argument. Returns the number of times the passed in shape could fit inside the shape (with no rotations). For instance, a rectangle with a width of 4 and a height of 8 could fit in two squares with sides of 4. + +Additionally, if an instance of a `Rectangle` is represented as a string, it should look like: `Rectangle(width=5, height=10)` + +## Square class + +The `Square` class should be a subclass of `Rectangle`. When a `Square` object is created, a single side length is passed in. The `__init__` method should store the side length in both the `width` and `height` attributes from the `Rectangle` class. + +The `Square` class should be able to access the `Rectangle` class methods but should also contain a `set_side` method. If an instance of a `Square` is represented as a string, it should look like: `Square(side=9)` + +Additionally, the `set_width` and `set_height` methods on the `Square` class should set both the width and height. + +## Usage example + +```py +rect = Rectangle(10, 5) +print(rect.get_area()) +rect.set_height(3) +print(rect.get_perimeter()) +print(rect) +print(rect.get_picture()) + +sq = Square(9) +print(sq.get_area()) +sq.set_side(4) +print(sq.get_diagonal()) +print(sq) +print(sq.get_picture()) + +rect.set_height(8) +rect.set_width(16) +print(rect.get_amount_inside(sq)) +``` + +That code should return: + +```bash +50 +26 +Rectangle(width=10, height=3) +********** +********** +********** + +81 +5.656854249492381 +Square(side=4) +**** +**** +**** +**** + +8 +``` + +# --hints-- + +The `Square` class should be a subclass of the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_subclass(self): + actual = issubclass(shape_calculator.Square, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a subclass of the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `Square` class should be a distinct class from the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_distinct_classes(self): + actual = shape_calculator.Square is not shape_calculator.Rectangle + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a distinct class from the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +A square object should be an instance of the `Square` class and the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_is_square_and_rectangle(self): + actual = isinstance(self.sq, shape_calculator.Square) and isinstance(self.sq, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected square object to be an instance of the Square class and the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Rectangle(3, 6)` should be `Rectangle(width=3, height=6)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_string(self): + actual = str(self.rect) + expected = "Rectangle(width=3, height=6)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle to be "Rectangle(width=3, height=6)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Square(5)` should be `Square(side=5)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_string(self): + actual = str(self.sq) + expected = "Square(side=5)" + self.assertEqual(actual, expected, 'Expected string representation of square to be "Square(side=5)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_area()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_area(self): + actual = self.rect.get_area() + expected = 18 + self.assertEqual(actual, expected, 'Expected area of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_area()` should return `25`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_area(self): + actual = self.sq.get_area() + expected = 25 + self.assertEqual(actual, expected, 'Expected area of square to be 25') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_perimeter()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_perimeter(self): + actual = self.rect.get_perimeter() + expected = 18 + self.assertEqual(actual, expected, 'Expected perimeter of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_perimeter()` should return `20`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_perimeter(self): + actual = self.sq.get_perimeter() + expected = 20 + self.assertEqual(actual, expected, 'Expected perimeter of square to be 20') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_diagonal()` should return `6.708203932499369`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_diagonal(self): + actual = self.rect.get_diagonal() + expected = 6.708203932499369 + self.assertEqual(actual, expected, 'Expected diagonal of rectangle to be 6.708203932499369') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_diagonal()` should return `7.0710678118654755`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_diagonal(self): + actual = self.sq.get_diagonal() + expected = 7.0710678118654755 + self.assertEqual(actual, expected, 'Expected diagonal of square to be 7.0710678118654755') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Rectangle` class should have a different string representation after setting new values. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_set_attributes(self): + self.rect.set_width(7) + self.rect.set_height(8) + actual = str(self.rect) + expected = "Rectangle(width=7, height=8)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle after setting new values to be "Rectangle(width=7, height=8)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_side()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_side(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_width()` or `set_height()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_height(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') + self.sq.set_width(4) + actual = str(self.sq) + expected = "Square(side=4)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting width to be "Square(side=4)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Rectangle` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_picture(self): + self.rect.set_width(7) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "*******\\n*******\\n*******\\n" + self.assertEqual(actual, expected, 'Expected rectangle picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Square` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_picture(self): + self.sq.set_side(2) + actual = self.sq.get_picture() + expected = "**\\n**\\n" + self.assertEqual(actual, expected, 'Expected square picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return the string `Too big for picture.` if the `width` or `height` attributes are larger than `50`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_big_picture(self): + self.rect.set_width(51) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "Too big for picture." + self.assertEqual(actual, expected, 'Expected message: "Too big for picture."') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(15,10).get_amount_inside(Square(5))` should return `6`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + self.sq = shape_calculator.Square(5) + + def test_get_amount_inside(self): + self.rect.set_height(10) + self.rect.set_width(15) + actual = self.rect.get_amount_inside(self.sq) + expected = 6 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 6.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(4,8).get_amount_inside(Rectangle(3, 6))` should return `1`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_two_rectangles(self): + rect2 = shape_calculator.Rectangle(4, 8) + actual = rect2.get_amount_inside(self.rect) + expected = 1 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 1.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(2,3).get_amount_inside(Rectangle(3, 6))` should return `0`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_none(self): + rect2 = shape_calculator.Rectangle(2, 3) + actual = rect2.get_amount_inside(self.rect) + expected = 0 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 0.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Rectangle: + pass + +class Square: + pass +``` + +# --solutions-- + +```py +class Rectangle: + def __init__(self, width, height): + self.width = width + self.height = height + + def __str__(self): + return f'Rectangle(width={self.width}, height={self.height})' + + def set_width(self, width): + self.width = width + + def set_height(self, height): + self.height = height + + def get_area(self): + area = self.width * self.height + return area + + def get_perimeter(self): + perimeter = self.width * 2 + self.height * 2 + return perimeter + + def get_diagonal(self): + diagonal = (self.width ** 2 + self.height ** 2) ** 0.5 + return diagonal + + def get_picture(self): + if self.width < 50 and self.height < 50: + picture = f'{"*"*self.width}\n'*self.height + return picture + else: + return 'Too big for picture.' + + def get_amount_inside(self, polygon): + h_number = self.height // polygon.height + w_number = self.width // polygon.width + repetition = h_number * w_number + return repetition + + +class Square(Rectangle): + def __init__(self, side): + self.width = side + self.height = side + + def __str__(self): + return f'Square(side={self.width})' + + def set_width(self, side): + self.width = side + self.height = side + + def set_height(self, side): + self.height = side + self.width = side + + def set_side(self,side): + self.width = side + self.height = side + +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md new file mode 100644 index 00000000000..94cf5c682de --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md @@ -0,0 +1,300 @@ +--- +id: 5e44414f903586ffb414c950 +title: Build a Probability Calculator Project +challengeType: 23 +forumTopicId: 462364 +dashedName: build-a-probability-calculator-project +--- + +# --description-- + +Suppose there is a hat containing 5 blue balls, 4 red balls, and 2 green balls. What is the probability that a random draw of 4 balls will contain at least 1 red ball and 2 green balls? While it would be possible to calculate the probability using advanced mathematics, an easier way is to write a program to perform a large number of experiments to estimate an approximate probability. + +For this project, you will write a program to determine the approximate probability of drawing certain balls randomly from a hat. + +First, create a `Hat` class in `main.py`. The class should take a variable number of arguments that specify the number of balls of each color that are in the hat. For example, a class object could be created in any of these ways: + +```py +hat1 = Hat(yellow=3, blue=2, green=6) +hat2 = Hat(red=5, orange=4) +hat3 = Hat(red=5, orange=4, black=1, blue=0, pink=2, striped=9) +``` + +A hat will always be created with at least one ball. The arguments passed into the hat object upon creation should be converted to a `contents` instance variable. `contents` should be a list of strings containing one item for each ball in the hat. Each item in the list should be a color name representing a single ball of that color. For example, if your hat is `{"red": 2, "blue": 1}`, `contents` should be `["red", "red", "blue"]`. + +The `Hat` class should have a `draw` method that accepts an argument indicating the number of balls to draw from the hat. This method should remove balls at random from `contents` and return those balls as a list of strings. The balls should not go back into the hat during the draw, similar to an urn experiment without replacement. If the number of balls to draw exceeds the available quantity, return all the balls. + +Next, create an `experiment` function in `main.py` (not inside the `Hat` class). This function should accept the following arguments: + +- `hat`: A hat object containing balls that should be copied inside the function. +- `expected_balls`: An object indicating the exact group of balls to attempt to draw from the hat for the experiment. For example, to determine the probability of drawing 2 blue balls and 1 red ball from the hat, set `expected_balls` to `{"blue":2, "red":1}`. +- `num_balls_drawn`: The number of balls to draw out of the hat in each experiment. +- `num_experiments`: The number of experiments to perform. (The more experiments performed, the more accurate the approximate probability will be.) + +The `experiment` function should return a probability. + +For example, if you want to determine the probability of getting at least two red balls and one green ball when you draw five balls from a hat containing six black, four red, and three green. To do this, you will perform `N` experiments, count how many times `M` you get at least two red balls and one green ball, and estimate the probability as `M/N`. Each experiment consists of starting with a hat containing the specified balls, drawing several balls, and checking if you got the balls you were attempting to draw. + +Here is how you would call the `experiment` function based on the example above with 2000 experiments: + +```py +hat = Hat(black=6, red=4, green=3) +probability = experiment(hat=hat, + expected_balls={"red":2,"green":1}, + num_balls_drawn=5, + num_experiments=2000) +``` + +The output would be something like this: + +```bash +0.356 +``` + +Since this is based on random draws, the probability will be slightly different each time the code is run. + +_Hint: Consider using the modules that are already imported at the top. Do not initialize random seed within the file._ + + +# --hints-- + +Creation of `hat` object should add correct contents. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_class_contents(self): + hat = probability_calculator.Hat(red=3,blue=2) + actual = hat.contents + expected = ["red","red","red","blue","blue"] + self.assertEqual(actual, expected, 'Expected creation of hat object to add correct contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method in `hat` class should reduce number of items in contents. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw(self): + hat = probability_calculator.Hat(red=5,blue=2) + actual = hat.draw(2) + expected = ['blue', 'red'] + self.assertEqual(actual, expected, 'Expected hat draw to return two random items from hat contents.') + actual = len(hat.contents) + expected = 5 + self.assertEqual(actual, expected, 'Expected hat draw to reduce number of items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method should behave correctly when the number of balls to extract is bigger than the number of balls in the hat. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw_2(self): + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + actual = hat.draw(20) + expected = ['yellow', 'yellow', 'yellow', 'yellow', 'yellow', 'red', 'green', 'green', 'green', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'test'] + self.assertEqual(actual, expected, 'Expected hat draw to return all items from hat contents.') + actual = len(hat.contents) + expected = 0 + self.assertEqual(actual, expected, 'Expected hat draw to leave no items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `experiment` method should return a different probability. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_prob_experiment(self): + hat = probability_calculator.Hat(blue=3,red=2,green=6) + probability = probability_calculator.experiment(hat=hat, expected_balls={"blue":2,"green":1}, num_balls_drawn=4, num_experiments=1000) + actual = probability + expected = 0.272 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + probability = probability_calculator.experiment(hat=hat, expected_balls={"yellow":2,"blue":3,"test":1}, num_balls_drawn=20, num_experiments=100) + actual = probability + expected = 1.0 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +# --seed-- + +## --seed-contents-- + +```py +import copy +import random + +class Hat: + pass + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + pass +``` + +# --solutions-- + +```py +import copy +import random + +class Hat: + def __init__(self, **hat): + self.hat = hat + contents = [] + for i in hat: + for j in range(hat[i]): + contents.append(i) + self.contents = contents + + + def draw(self, number): + drawn = [] + if number >= len(self.contents): + drawn.extend(self.contents) + self.contents = [] + else: + for i in range(number): + drawn.append( + self.contents.pop(random.randrange(len(self.contents))) + ) + return drawn + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + expected_balls_list = [] + drawn_list = [] + success = 0 + for i in expected_balls: + for j in range(expected_balls[i]): + expected_balls_list.append(i) + for j in range(num_experiments): + hat_copy = copy.deepcopy(hat) + drawn_list.append(hat_copy.draw(num_balls_drawn)) + exp_ball_list_copy = expected_balls_list[:] + for k in range(len(drawn_list[j])): + try: + ind = exp_ball_list_copy.index(drawn_list[j][k]) + exp_ball_list_copy.pop(ind) + except: + continue + if len(exp_ball_list_copy) == 0: + success += 1 + probability = success/num_experiments + return probability +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md new file mode 100644 index 00000000000..05e60f0b74a --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md @@ -0,0 +1,582 @@ +--- +id: 5e444136903586ffb414c94d +title: Build a Time Calculator Project +challengeType: 23 +forumTopicId: 462360 +dashedName: build-a-time-calculator-project +--- + +# --description-- + +Write a function named `add_time` that takes in two required parameters and one optional parameter: + +- a start time in the 12-hour clock format (ending in AM or PM) +- a duration time that indicates the number of hours and minutes +- (optional) a starting day of the week, case insensitive + +The function should add the duration time to the start time and return the result. + +If the result will be the next day, it should show `(next day)` after the time. If the result will be more than one day later, it should show `(n days later)` after the time, where "n" is the number of days later. + +If the function is given the optional starting day of the week parameter, then the output should display the day of the week of the result. The day of the week in the output should appear after the time and before the number of days later. + +Below are some examples of different cases the function should handle. Pay close attention to the spacing and punctuation of the results. + +```py +add_time('3:00 PM', '3:10') +# Returns: 6:10 PM + +add_time('11:30 AM', '2:32', 'Monday') +# Returns: 2:02 PM, Monday + +add_time('11:43 AM', '00:20') +# Returns: 12:03 PM + +add_time('10:10 PM', '3:30') +# Returns: 1:40 AM (next day) + +add_time('11:43 PM', '24:20', 'tueSday') +# Returns: 12:03 AM, Thursday (2 days later) + +add_time('6:30 PM', '205:12') +# Returns: 7:42 AM (9 days later) +``` + +Do not import any Python libraries. Assume that the start times are valid times. The minutes in the duration time will be a whole number less than 60, but the hour can be any whole number. + +# --hints-- +Calling `add_time('3:30 PM', '2:12')` should return `'5:42 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +import time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period(self): + actual = time_calculator.add_time("3:30 PM", "2:12") + expected = "5:42 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12" to return "5:42 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:55 AM', '3:12')` should return `'3:07 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_different_period(self): + actual = time_calculator.add_time("11:55 AM", "3:12") + expected = "3:07 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:55 AM", "3:12" to return "3:07 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected time to end with `'(next day)'` when it is the next day. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_next_day(self): + actual = time_calculator.add_time("9:15 PM", "5:30") + expected = "2:45 AM (next day)" + self.assertEqual(actual, expected, 'Expected time to end with "(next day)" when it is the next day.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected period to change from `AM` to `PM` at `12:00`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_period_change_at_twelve(self): + actual = time_calculator.add_time("11:40 AM", "0:25") + expected = "12:05 PM" + self.assertEqual(actual, expected, 'Expected period to change from AM to PM at 12:00') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00')` should return `'2:59 AM (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four(self): + actual = time_calculator.add_time("2:59 AM", "24:00") + expected = "2:59 AM (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00" to return "2:59 AM (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05')` should return `'12:04 AM (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later(self): + actual = time_calculator.add_time("11:59 PM", "24:05") + expected = "12:04 AM (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05" to return "12:04 AM (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02')` should return `'6:18 AM (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration(self): + actual = time_calculator.add_time("8:16 PM", "466:02") + expected = "6:18 AM (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02" to return "6:18 AM (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected adding `0:00` to return the initial time. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_no_change(self): + actual = time_calculator.add_time("5:01 AM", "0:00") + expected = "5:01 AM" + self.assertEqual(actual, expected, 'Expected adding 0:00 to return initial time.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('3:30 PM', '2:12', 'Monday')`should return `'5:42 PM, Monday'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period_with_day(self): + actual = time_calculator.add_time("3:30 PM", "2:12", "Monday") + expected = "5:42 PM, Monday" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12", "Monday" to return "5:42 PM, Monday"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00', 'saturDay')` should return `'2:59 AM, Sunday (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four_with_day(self): + actual = time_calculator.add_time("2:59 AM", "24:00", "saturDay") + expected = "2:59 AM, Sunday (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00", "saturDay" to return "2:59 AM, Sunday (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05', 'Wednesday')` should return `'12:04 AM, Friday (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later_with_day(self): + actual = time_calculator.add_time("11:59 PM", "24:05", "Wednesday") + expected = "12:04 AM, Friday (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05", "Wednesday" to return "12:04 AM, Friday (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02', 'tuesday')`should return `'6:18 AM, Monday (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration_with_day(self): + actual = time_calculator.add_time("8:16 PM", "466:02", "tuesday") + expected = "6:18 AM, Monday (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02", "tuesday" to return "6:18 AM, Monday (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def add_time(start, duration): + + + + + + return new_time +``` + +# --solutions-- + +```py +def add_time(start, duration, day=''): + start_arr = start[0:-3].split(':') + dur_arr = duration.split(':') + tail = '' + # converting to 24h format + if 'AM' in start: + if start_arr[0] == '12': + start_arr[0] = '00' + elif 'PM' in start: + if start_arr[0] == '12': + start_arr[0] = '12' + else: + start_arr[0] = f'{int(start_arr[0]) + 12}' + + # adding minutes + sum_m = int(start_arr[1]) + int(dur_arr[1]) + if sum_m > 59: + + if (sum_m - 60 * (sum_m//60)) < 10: + mins = f'0{(sum_m - 60 * (sum_m//60))}' + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + + else: + mins = sum_m - 60 * (sum_m//60) + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + else: + if sum_m < 10: + mins = f'0{sum_m}' + else: + mins = sum_m + + #adding hours + sum_h = int(start_arr[0]) + int(dur_arr[0]) + if sum_h < 24: + hours= sum_h + #time_24 = f'{hours}:{mins}' + else: + days_after = sum_h//24 + if days_after == 1: + hours = sum_h - 24 + tail = ' (next day)' + else: + hours = sum_h - 24 * days_after + tail = f' ({days_after} days later)' + + #converting back to AM/PM + if hours == 0: + hours = 12 + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + elif hours < 12: + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + else: + if hours > 12: + hours = hours - 12 + time = f'{hours}:{mins} PM' + final_time = f'{time}{tail}' + + #days of the week + week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] + if day: + day = day.capitalize() + if not tail: + final_time = f'{time}, {day}' + elif tail == ' (next day)': + index = week.index(day) + 1 + if index == 7: + index = 0 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + elif tail: + index = (week.index(day) + days_after) % 7 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + + + print('\n') + print(final_time) + print('\n') + return final_time + +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md new file mode 100644 index 00000000000..4f112fd73c5 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md @@ -0,0 +1,248 @@ +--- +id: 5e44412c903586ffb414c94c +title: Build an Arithmetic Formatter Project +challengeType: 23 +forumTopicId: 462359 +dashedName: build-an-arithmetic-formatter-project +--- + +# --description-- + +Students in primary school often arrange arithmetic problems vertically to make them easier to solve. For example, "235 + 52" becomes: + +```py + 235 ++ 52 +----- +``` + +Finish the `arithmetic_arranger` function that receives a list of strings which are arithmetic problems, and returns the problems arranged vertically and side-by-side. The function should optionally take a second argument. When the second argument is set to `True`, the answers should be displayed. + +## Example + +Function Call: + +```py +arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"]) +``` + +Output: + +```py + 32 3801 45 123 ++ 698 - 2 + 43 + 49 +----- ------ ---- ----- +``` + +Function Call: + +```py +arithmetic_arranger(["32 + 8", "1 - 3801", "9999 + 9999", "523 - 49"], True) +``` + +Output: + +```py + 32 1 9999 523 ++ 8 - 3801 + 9999 - 49 +---- ------ ------ ----- + 40 -3800 19998 474 +``` + +## Rules + +The function will return the correct conversion if the supplied problems are properly formatted, otherwise, it will **return** a **string** that describes an error that is meaningful to the user. + +- Situations that will return an error: + - If there are **too many problems** supplied to the function. The limit is **five**, anything more will return: `'Error: Too many problems.'` + - The appropriate operators the function will accept are **addition** and **subtraction**. Multiplication and division will return an error. Other operators not mentioned in this bullet point will not need to be tested. The error returned will be: `"Error: Operator must be '+' or '-'."` + - Each number (operand) should only contain digits. Otherwise, the function will return: `'Error: Numbers must only contain digits.'` + - Each operand (aka number on each side of the operator) has a max of four digits in width. Otherwise, the error string returned will be: `'Error: Numbers cannot be more than four digits.'` +- If the user supplied the correct format of problems, the conversion you return will follow these rules: + - There should be a single space between the operator and the longest of the two operands, the operator will be on the same line as the second operand, both operands will be in the same order as provided (the first will be the top one and the second will be the bottom). + - Numbers should be right-aligned. + - There should be four spaces between each problem. + - There should be dashes at the bottom of each problem. The dashes should run along the entire length of each problem individually. (The example above shows what this should look like.) + +# --hints-- + +`arithmetic_arranger(["3801 - 2", "123 + 49"])` should return `3801 123\n- 2 + 49\n------ -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3801 - 2", "123 + 49"]), ' 3801 123\\n- 2 + 49\\n------ -----')`); + } +}) +``` + +`arithmetic_arranger(["1 + 2", "1 - 9380"])` should return `1 1\n+ 2 - 9380\n--- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["1 + 2", "1 - 9380"]), ' 1 1\\n+ 2 - 9380\\n--- ------')`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `3 3801 45 123\n+ 855 - 2 + 43 + 49\n----- ------ ---- -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]), ' 3 3801 45 123\\n+ 855 - 2 + 43 + 49\\n----- ------ ---- -----')`); + } +}) +``` + +`arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"])` should return `11 3801 1 123 1\n+ 4 - 2999 + 2 + 49 - 9380\n---- ------ --- ----- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"]), ' 11 3801 1 123 1\\n+ 4 - 2999 + 2 + 49 - 9380\\n---- ------ --- ----- ------')`); + } +}) +``` + +`arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"])` should return `'Error: Too many problems.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"]), 'Error: Too many problems.')`); + } +}) +``` + +`arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `"Error: Operator must be '+' or '-'."`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Operator must be '+' or '-'.")`); + } +}) +``` + +`arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers cannot be more than four digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers cannot be more than four digits.")`); + } +}) +``` + +`arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers must only contain digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers must only contain digits.")`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "988 + 40"], True)` should return `3 988\n+ 855 + 40\n----- -----\n 858 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "988 + 40"], True), " 3 988\\n+ 855 + 40\\n----- -----\\n 858 1028")`); + } +}) +``` + +`arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True)` should return `32 1 45 123 988\n- 698 - 3801 + 43 + 49 + 40\n----- ------ ---- ----- -----\n -666 -3800 88 172 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True), " 32 1 45 123 988\\n- 698 - 3801 + 43 + 49 + 40\\n----- ------ ---- ----- -----\\n -666 -3800 88 172 1028")`); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def arithmetic_arranger(problems, show_answers=False): + + return problems + +print(f'\n{arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"])}') +``` + +# --solutions-- + +```py +def arithmetic_arranger(problems, result=False): + + lin1 = "" + lin2 = "" + lin3 = "" + lin4 = "" + + if len(problems) > 5: + return 'Error: Too many problems.' + for problem in problems: + [num1, sym, num2] = problem.split() + sign = ['+', '-'] + if sym not in sign: + return ("Error: Operator must be '+' or '-'.") + if len(num1) > 4 or len(num2) > 4: + return ("Error: Numbers cannot be more than four digits.") + if not num1.isnumeric() or not num2.isnumeric(): + return ("Error: Numbers must only contain digits.") + + lin1 += " " + num1 + " " if len(num1) >= len( + num2) else " " * (len(num2) + 2 - len(num1)) + num1 + " " + lin2 += sym + " " + num2 + " " if len(num2) >= len( + num1) else sym + " " * (len(num1) - len(num2) + 1) + num2 + " " + nmax = (len(num1) + 2) if len(num1) >= len(num2) else (len(num2) + 2) + lin3 += "-" * nmax + " " + op = int(num1) + int(num2) if sym == "+" else int(num1) - int(num2) + lin4 += (" " * (nmax - len(str(op)))) + str(op) + " " + + arranged_problems = lin1.rstrip() + "\n" + lin2.rstrip( + ) + "\n" + lin3.rstrip() + if result: + arranged_problems += "\n" + lin4.rstrip() + + return arranged_problems +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md index 1f03baeb942..fe638ef77be 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md @@ -23,7 +23,7 @@ Add a new key-value pair to your dictionary. Use the string `species` as the key You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 1 `)) }) @@ -32,7 +32,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have a `species` key with the value `guinea pig` inside your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig"} `)) }) diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md index 5002dc1ff51..79fc2daa522 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md @@ -14,7 +14,7 @@ Now, replace the existent keys with the strings `A` and `B` — one for each nod Your dictionary should have an `A` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "A" in my_graph `)) }) @@ -23,7 +23,7 @@ Your dictionary should have an `A` key. Your `A` key should have `B` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -32,7 +32,7 @@ Your `A` key should have `B` as the value. Your dictionary should have an `B` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "B" in my_graph `)) }) @@ -41,7 +41,7 @@ Your dictionary should have an `B` key. Your `B` key should have `A` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["B"] == "A" `)) }) @@ -50,7 +50,7 @@ Your `B` key should have `A` as the value. Your dictionary should have two keys. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph) == 2 `)) }) diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md index 8de227d3dff..48e351bccab 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md @@ -16,7 +16,7 @@ Modify your existing dictionary to represent this arrangement. Use a list to rep Your dictionary should have 3 keys — `A`, `B`, and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C"] len(my_graph) == 3 and all(key in my_graph for key in key_list) `)) @@ -26,7 +26,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["A"]` should have the `B` node as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -35,7 +35,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -44,7 +44,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. The value of `my_graph["B"]` should be a list containing the other two nodes. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -53,7 +53,7 @@ The value of `my_graph["B"]` should be a list containing the other two nodes. The value of `my_graph["C"]` should be the connected node. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["C"] == "B" `)) }) diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md index 9f90b08d36e..25e45427669 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md @@ -14,7 +14,7 @@ Add one last node, `D`, which is connected with `A` and `C`. Modify your diction Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -24,7 +24,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list `)) }) @@ -33,7 +33,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["A"]) == 2 and "B" in my_graph["A"] and "D" in my_graph["A"] `)) }) @@ -42,7 +42,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -51,7 +51,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -60,7 +60,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list `)) }) @@ -69,7 +69,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["C"]) == 2 and "B" in my_graph["C"] and "D" in my_graph["C"] `)) }) @@ -78,7 +78,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list `)) }) @@ -87,7 +87,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["D"]) == 2 and "A" in my_graph["D"] and "C" in my_graph["D"] `)) }) diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md index 9e2a334c700..77e32aead7d 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md @@ -27,7 +27,7 @@ Modify `my_graph["A"]` into a list of tuples, considering the following distance Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -37,7 +37,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list and all(type(i) is tuple for i in my_graph["A"]) `)) }) @@ -46,7 +46,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 3), ("D", 1)] len(my_graph["A"]) == 2 and all(t in my_graph["A"] for t in tuples) `)) diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md index 741dbbca68d..3873d9643c7 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md @@ -16,7 +16,7 @@ Declare an empty function called `shortest_path` and don't forget the `pass` key You should have a `shortest_path` function. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect inspect.isfunction(shortest_path) `)) diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md index 25b23889552..70612d5d2d7 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md @@ -16,7 +16,7 @@ For that your function needs two parameters: `graph`, and `start`. Add them to y Your function should accept `graph` and `start` as the parameters, in this order. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == '(graph, start)' diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md index a4329d1c9c3..189edee52ae 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md @@ -22,7 +22,7 @@ Your function should take three parameters:`graph`, `start`, and `target`. The o The `target` parameter should have the default value of an empty string. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == "(graph, start, target='')" diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md index 76b2c4d0da3..d1793fe2f04 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md @@ -14,7 +14,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list and all(type(i) is tuple for i in my_graph["B"]) `)) }) @@ -23,7 +23,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 3), ("C", 4)] len(my_graph["B"]) == 2 and all(t in my_graph["B"] for t in tuples) `)) diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md index 47c592c584c..fa3b90b95ea 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md @@ -14,7 +14,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list and all(type(i) is tuple for i in my_graph["C"]) `)) }) @@ -23,7 +23,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 4), ("D", 7)] len(my_graph["C"]) == 2 and all(t in my_graph["C"] for t in tuples) `)) @@ -33,7 +33,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list and all(type(i) is tuple for i in my_graph["D"]) `)) }) @@ -42,7 +42,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 1), ("C", 7)] len(my_graph["D"]) == 2 and all(t in my_graph["D"] for t in tuples) `)) diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md index b9e30030c34..5b9e053a261 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md @@ -25,7 +25,7 @@ Now, you are going to test your function with another graph. Change `my_graph` i You should modify `my_graph` into the provided graph. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` g = { 'A': [('B', 5), ('C', 3), ('E', 11)], 'B': [('A', 5), ('C', 1), ('F', 2)], diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md index 26f5000936f..408a567495a 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md @@ -27,7 +27,7 @@ You should have a variable called `copper`. Your `copper` variable should have the value of an empty dictionary. Use a pair of curly braces for that. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {} `)) }) diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md index bd63b966781..22a65e728ac 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md @@ -16,7 +16,7 @@ Add another key `age` to your dictionary and give it the integer number `2` as v You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 2 `)) }) @@ -25,7 +25,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have an `age` key with the value `2` just after `'species': 'guinea pig'`, inside your `copper` dictionary. Don't forget the comma. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md index 513dec58334..3d1fe59a101 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md @@ -25,7 +25,7 @@ After your dictionary, follow the example above to access the `species` key of ` You should not modify your dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md index 7a1de6bad36..6b4d96e0e85 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md @@ -24,7 +24,7 @@ You should rename your `copper` dictionary into `my_graph`. Your `my_graph` variable should be a dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph) is dict `)) }) diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md index 41f400556ef..4df05fc3502 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md @@ -16,7 +16,7 @@ Your `merge_sort` function should take a single parameter: `array`. ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('merge_sort'))) == '(array)' + str(inspect.signature(merge_sort)) == '(array)' `)) }) ``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md index 0db77a88a47..8ae8df84a21 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md @@ -19,13 +19,9 @@ You should create an `if` statement to check if `len(array) <= 1`. Don't forget ```js ({ - test: () => { - const transformedCode = code.replace(/\r/g, ""); - const merge_sort = __helpers.python.getDef("\n" + transformedCode, "merge_sort"); - const { function_body } = merge_sort; - - assert.match(function_body, /if\s+len\(\s*array\s*\)\s*<=\s*1:\s*pass/); - } + test: () => assert(runPython(` + _Node(_code).find_function("merge_sort").find_ifs()[0].find_conditions()[0].is_equivalent("len(array) <= 1") + `)) }) ``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md index 22265598c5f..bfec72fff97 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md @@ -22,13 +22,11 @@ Use the `pass` keyword in the body of the `if` statement. Your `if` statement should check if `__name__` has a value of `'__main__'` ```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:/); -``` - -You should have the `pass` keyword in the body of your `if` statement - -```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:\s*[^}]*\bpass\b/); +({ + test: () => assert(runPython(` + _Node(_code).find_ifs()[0].find_conditions()[0].is_equivalent("__name__ == '__main__'") + `)) +}) ``` # --seed-- diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md index 4ecd8963055..08972611453 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md @@ -25,7 +25,6 @@ Your `rods` variable should be an empty dictionary. ```js ({ test: () => assert(runPython(` - rods = __locals.get("rods") rods == {} `)) }) diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md index 7239d283282..931dcdd3e4b 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md @@ -19,8 +19,7 @@ You should use the `range()` function to assign a sequence of numbers to `rods[' ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - type(a['A']) is range + type(rods['A']) is range `)) }) ``` @@ -29,8 +28,7 @@ You should use the `range()` function to assign the sequence of numbers from `3` ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == range(3, 0, -1) + rods['A'] == range(3, 0, -1) `)) }) ``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md index cf4a87ceb9e..12a92abec79 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md @@ -17,8 +17,7 @@ You should pass your `range()` call to the `list()` function. ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == list(range(3, 0, -1)) + rods['A'] == list(range(3, 0, -1)) `)) }) ``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md index f34f4e2e0eb..938e7d863eb 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md @@ -23,7 +23,7 @@ You should declare an empty function named `move`. Remember to use the `pass` ke ({ test: () => { assert(runPython(` import inspect - inspect.isfunction(__locals.get('move')) + inspect.isfunction(move) `)) } }) diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md index 83147b7f810..7b127183447 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md @@ -23,9 +23,8 @@ The value of `number_of_moves` should be the expression to calculate the number ```js ({ test: () => { - assert(runPython(` - a = __locals.get('NUMBER_OF_DISKS') - __locals.get('number_of_moves') == 2**a -1 + assert(runPython(` + number_of_moves == 2**NUMBER_OF_DISKS -1 `)) } }) ``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md index 632abed5190..3542115289e 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md @@ -16,7 +16,7 @@ You should declare an empty function named `make_allowed_move`. Remember to use ```js ({ test: () => assert(runPython(` import inspect - inspect.isfunction(__locals.get('make_allowed_move')) + inspect.isfunction(make_allowed_move) `)) }) ``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md index 7db0f049f08..935b1365a7c 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md @@ -16,7 +16,7 @@ Your `make_allowed_move()` function should have two parameters named `rod1` and ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('make_allowed_move'))) == '(rod1, rod2)' + str(inspect.signature(make_allowed_move)) == '(rod1, rod2)' `)) }) ``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md index 35706a0836c..0ddfb31f5c5 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md @@ -14,16 +14,14 @@ The `rods` dictionary will represent the three rods with their disks. Give it th Your `rods` dictionary should have an `'A'` key. ```js -({ test: () => assert(runPython(`'A' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'A' in rods`)) }) ``` `rods['A']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['A'] == [] + rods['A'] == [] `)) }) ``` @@ -31,16 +29,14 @@ Your `rods` dictionary should have an `'A'` key. Your `rods` dictionary should have a `'B'` key. ```js -({ test: () => assert(runPython(`'B' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'B' in rods`)) }) ``` `rods['B']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['B'] == [] + rods['B'] == [] `)) }) ``` @@ -48,16 +44,14 @@ Your `rods` dictionary should have a `'B'` key. Your `rods` dictionary should have a `'C'` key. ```js -({ test: () => assert(runPython(`'C' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'C' in rods`)) }) ``` `rods['C']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['C'] == [] + rods['C'] == [] `)) }) ``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md index c3ccce273c6..e8b11ffd473 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md @@ -22,7 +22,7 @@ Your `move()` function should have `n`, `source`, `auxiliary`, and `target` as t ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('move'))) == '(n, source, auxiliary, target)' + str(inspect.signature(move)) == '(n, source, auxiliary, target)' `)) }) ``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md index 9572ed46ece..b722a192c27 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md @@ -17,9 +17,8 @@ You should reduce the indentation level of all the code after the `return` state ```js ({ test: () => assert(runPython(` - hanoi = __locals.get("move") a, b, c = [3, 2, 1], [], [] - hanoi(3, a, b, c) + move(3, a, b, c) a == [] and b == [] and c == [3, 2, 1] `)) }) diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md index 16e7b5b68ed..00efcbb8726 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md @@ -23,9 +23,8 @@ You should add `direction` as the third parameter of your function. ```js ({ test: () => assert(runPython(` - import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + import inspect + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction)' `)) }) diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md index 74562ae26a5..d19dc6dbe27 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md @@ -24,8 +24,7 @@ You should declare a new function called `encrypt`. Remember to use the `pass` k ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - inspect.isfunction(f) + inspect.isfunction(encrypt) `)) }) ``` @@ -35,8 +34,7 @@ Your `encrypt` function should take `message` and `key` as the parameters. The o ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - sig = inspect.signature(f) + sig = inspect.signature(encrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md index fa091717efb..b7357c63760 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md @@ -16,8 +16,7 @@ You should define a new function called `decrypt`. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - inspect.isfunction(f) + inspect.isfunction(decrypt) `)) }) ``` @@ -27,8 +26,7 @@ Your `decrypt` function should take `message` and `key` as the parameters. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - sig = inspect.signature(f) + sig = inspect.signature(decrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md index 19fcb7ee6a3..f719d77790e 100644 --- a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md @@ -23,8 +23,7 @@ The `direction` parameter of your `vigenere` function should have a default valu ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction=1)' `)) }) diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md new file mode 100644 index 00000000000..733f024fa29 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md @@ -0,0 +1,39 @@ +--- +id: 65ef181dad3d96b14a21a03e +title: Step 1 +challengeType: 20 +dashedName: step-1 +--- + +# --description-- + +In this project, you will find the approximate square root of a given number using the bisection method. + +The bisection method is a technique for finding the roots of a real-valued function. It works by narrowing down an interval where the square root lies until it converges to a value within a specified tolerance. + +Begin by creating a function named `square_root_bisection`. Leave the parameters empty for now. + +# --hints-- + +You should define the function `square_root_bisection` with no parameters. + +```js +({ + test: () => { + assert(runPython(` + import inspect + inspect.isfunction(square_root_bisection) + `)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md new file mode 100644 index 00000000000..f5091e5a2c6 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md @@ -0,0 +1,38 @@ +--- +id: 65ef190c6b51e9b5a5f7ed29 +title: Step 2 +challengeType: 20 +dashedName: step-2 +--- + +# --description-- + +Give the `square_root_bisection` method the following parameters: + +- `square_target`: The number for which you want to find the square root. +- `tolerance` (optional): The acceptable difference between the square of the approximate root value and the actual target value (default is `1e-7`). The tolerance `1e-7` implies that the solution will be accurate to within `0.0000001` of the true value and is a good default choice that balances accuracy and performance. +- `max_iterations` (optional): The maximum number of iterations to perform (default is `100`). If the method doesn't converge within this limit, you'll assume the solution is not found. + +# --hints-- + +Your function should have these parameters: `square_target`, `tolerance = 1e-7`, and `max_iterations = 100`. The order matters. + +```js +({ + test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").has_args("square_target, tolerance=1e-7, max_iterations=100")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py + +--fcc-editable-region-- +def square_root_bisection(): + pass +--fcc-editable-region-- + +``` + diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md new file mode 100644 index 00000000000..77628582774 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md @@ -0,0 +1,46 @@ +--- +id: 65ef19425d1b27b6c930bae6 +title: Step 3 +challengeType: 20 +dashedName: step-3 +--- + +# --description-- + +If the number for which you want to find the square root is negative, the code should raise an error as the square root of a negative number is not defined in real numbers. + +Remove the `pass` statement and create an `if` statement to check if `square_target` is less than `0`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").has_pass()`)) + } +}) +``` + +You should create an `if` statement to check if `square_target < 0`. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_if("square_target < 0").is_empty()`)) + + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance = 1e-7, max_iterations = 100): + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md new file mode 100644 index 00000000000..20f407dfd2a --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md @@ -0,0 +1,46 @@ +--- +id: 65ef198fde24dfb7ff675b42 +title: Step 4 +challengeType: 20 +dashedName: step-4 +--- + +# --description-- + +If the `square_target` is less than `0`, raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'`. Don't forget to remove the `pass` keyword. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'` inside the `if` body. + +```js +({ + test: () => { + + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].is_equivalent("raise ValueError('Square root of negative number is not defined in real numbers')")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md new file mode 100644 index 00000000000..f31f83a0ed3 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md @@ -0,0 +1,38 @@ +--- +id: 65ef19ec318e2fb9066381e3 +title: Step 5 +challengeType: 20 +dashedName: step-5 +--- + +# --description-- + +You'll create separate cases for when `square_target` is `0` or `1`. + +Begin by creating an `if` statement to check if `square_target` is equal to `1`. + +# --hints-- + +You should create an `if` statement to check that `square_target == 1`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[0].is_equivalent("square_target == 1")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md new file mode 100644 index 00000000000..927a215705a --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md @@ -0,0 +1,51 @@ +--- +id: 65ef1a1fcb527bba0ca82ccf +title: Step 6 +challengeType: 20 +dashedName: step-6 +--- + +# --description-- + +If the `square_target` is equal to `1`, declare a variable `root` and assign it the value `1` . Also, print the message `'The square root of {square_target} is 1'`. Remember to format the message using an f-string. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should assign the value `1` to the `root` variable and print the message `'The square root of {square_target} is 1'` inside the `if` body. + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].is_equivalent("root = 1\\nprint(f'The square root of {square_target} is 1')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md new file mode 100644 index 00000000000..9ba5f5b573f --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md @@ -0,0 +1,55 @@ +--- +id: 65ef1a50049cf9bada13266f +title: Step 7 +challengeType: 20 +dashedName: step-7 +--- + +# --description-- + +Create an `elif` statement to check if `square_target` is equal to `0`. If it is, assign the value `0` to the `root` variable. Also, print the message `'The square root of {square_target} is 0'`. Remember to format the message using an f-string. + +# --hints-- + +You should have an `elif` statement to check the condition `square_target == 0`. + + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[1].is_equivalent("square_target == 0")`)); + } +}) + +``` + +You should assign the value `0` to the `root` variable and pass the argument `f'The square root of {square_target} is 0'` to a `print` call. + + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[1].is_equivalent("root = 0\\nprint(f'The square root of {square_target} is 0')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md new file mode 100644 index 00000000000..0fb10817783 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md @@ -0,0 +1,45 @@ +--- +id: 65ef1a720d6e65bbb0d22463 +title: Step 8 +challengeType: 20 +dashedName: step-8 +--- + +# --description-- +Next, you are going to work on the cases where the `square_target` is a positive number apart from `1` or `0`. + +Create an `else` clause to handle these cases. + +# --hints-- + +Create an `else` clause and do not forget to add a `pass` keyword. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[2] == _Node()`)) + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md new file mode 100644 index 00000000000..8f10c9990f1 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md @@ -0,0 +1,73 @@ +--- +id: 65ef1aacca094bbcc2e2a3c8 +title: Step 9 +challengeType: 20 +dashedName: step-9 +--- + +# --description-- + +In Python, the `max()` function returns the largest of the input values. + +```python +max(1, 2, 3) # Output: 3 +``` + +The variables `low` and `high` will be used to define the initial interval where the square root lies. + +Inside the `else` clause, initialize the `low` variable to `0` and the `high` variable to be the maximum of either `1` or `square_target` as the square root of a number is always less than or equal to the number itself. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].has_pass()`)) + } +}) +``` + +You should declare a variable `low` and assign it `0`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("low").is_equivalent("low = 0")`)); } +}) + +``` + +You should declare a variable `high` and use the `max()` function to assign it the maximum value between `1` and `square_target`. + +```js + +({ test: () => assert(runPython(` +node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("high") +values = ["high = max(1, square_target)", "high = max(square_target, 1)"] +any(node.is_equivalent(val) for val in values) +`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md new file mode 100644 index 00000000000..6711973a758 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md @@ -0,0 +1,46 @@ +--- +id: 65ef1afca9a8f6be0d4150ba +title: Step 10 +challengeType: 20 +dashedName: step-10 +--- + +# --description-- + +Set the value of `root` to `None` as at this point, you don't have an approximate value yet. + +# --hints-- + +The value of `root` should be `None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].is_equivalent("low = 0\\nhigh = max(1, square_target)\\nroot = None")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + low = 0 + high = max(1, square_target) + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md new file mode 100644 index 00000000000..69406d9fee2 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md @@ -0,0 +1,51 @@ +--- +id: 65ef1be2b958cabf712296cd +title: Step 11 +challengeType: 20 +dashedName: step-11 +--- + +# --description-- + +Now you'll repeatedly narrow down the interval by finding the midpoint of the current interval and comparing the square of the midpoint with the target value. + +For that, inside the `else` block, create a `for` loop that runs up to `max_iterations` times. + +# --hints-- + +You should create a `for` loop to iterate over `range(max_iterations)`. Use `_` as the loop variable. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].is_equivalent("for _ in range(max_iterations):\\n pass")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md new file mode 100644 index 00000000000..e5efb88bafc --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md @@ -0,0 +1,78 @@ +--- +id: 65ef1c0a03fcabc04ded7e69 +title: Step 12 +challengeType: 20 +dashedName: step-12 +--- + +# --description-- + +Inside the for loop, calculate the midpoint of the interval ranging from `low` to `high`. Assign this value to a variable `mid`. + +Also, calculate the square of the midpoint (`mid`) and store it in the variable `square_mid`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].has_pass()`)) + + } + +}) + +``` + +You should declare a variable `mid` and assign it `(low + high) / 2` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(` + node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("mid") + values = ["mid = (low + high) / 2", "mid = (high + low) / 2"] + any(node.is_equivalent(val) for val in values) + `)) + + } + +}) +``` + +You should declare a variable `square_mid` and assign it `mid**2` inside the body of the for loop. + +```js +({ test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("square_mid").is_equivalent("square_mid = mid**2")`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md new file mode 100644 index 00000000000..f365f00475d --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md @@ -0,0 +1,53 @@ +--- +id: 65ef1c34a541afc12dbb849d +title: Step 13 +challengeType: 20 +dashedName: step-13 +--- + +# --description-- + +The `abs()` function returns the absolute value of a number, which is always positive, regardless of the number sign. You will use it to check that the estimated square root is close enough to the actual value. + +Now, create an `if` statement to check if the absolute value of the difference between `square_mid` and `square_target` is within the specified `tolerance`. + +# --hints-- + +You should have an `if` statement with the condition `abs(square_mid - square_target) < tolerance:` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[0].is_equivalent("abs(square_mid - square_target) < tolerance")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md new file mode 100644 index 00000000000..7c84ec9d7fe --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md @@ -0,0 +1,68 @@ +--- +id: 65ef1cb031de30c2cde64c12 +title: Step 14 +challengeType: 20 +dashedName: step-14 +--- + +# --description-- + +If the difference is within the specified `tolerance`, set the value of `root` to `mid` and break out of the loop. + +# --hints-- + +You should remove the existing `pass` statement. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].has_pass()`)) + } + +}) + +``` + +You should assign the value of `mid` to `root` and break out of the loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].is_equivalent("root = mid\\nbreak")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md new file mode 100644 index 00000000000..18a6767deab --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md @@ -0,0 +1,71 @@ +--- +id: 65ef1cda150a59c3b8306944 +title: Step 15 +challengeType: 20 +dashedName: step-15 +--- + +# --description-- + +If the difference is not within the specified `tolerance`, create an `elif` statement to check if `square_mid` is less than `square_target`. + +Assign the value of `mid` to `low` as the square root would now lie between `low` and `mid`. + +# --hints-- + +You should create an `elif` statement that checks if `square_mid < square_target`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[1].is_equivalent("square_mid < square_target")`)) + + } + +}) +``` + +You should assign the value of `mid` to `low`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[1].is_equivalent("low = mid")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md new file mode 100644 index 00000000000..06598491f2e --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md @@ -0,0 +1,70 @@ +--- +id: 65ef1d104c2be9c4d8e22075 +title: Step 16 +challengeType: 20 +dashedName: step-16 +--- + +# --description-- + +If both the `if` and `elif` conditions are not met, the value of `mid` would be greater than `square_target`. In this case, create an `else` clause and assign the value of `mid` to `high`. + +# --hints-- + +You should have an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[2]== _Node()`)); + } +}) + +``` + +You should assign the value of `mid` to `high` in the `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[2].is_equivalent("high = mid")`)); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- + elif square_mid < square_target: + low = mid + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md new file mode 100644 index 00000000000..45e3e9987a8 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md @@ -0,0 +1,76 @@ +--- +id: 65ef1d5e3d2927c5e0f4997b +title: Step 17 +challengeType: 20 +dashedName: step-17 +--- + +# --description-- + +Outside the for loop, create an `if` statement to check if the value of `root` is still `None`. If it is, print the message `'Failed to converge within {max_iterations} iterations.'`. Remember to format the message using an f-string. + +# --hints-- + +You should create an `if` statement that checks if `root is None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[0].is_equivalent("root is None")`)); + + } +}) +``` + +You should pass the argument `f'Failed to converge within {max_iterations} iterations.'` to the `print` function. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].is_equivalent("if root is None:\\n print(f'Failed to converge within {max_iterations} iterations.')")`)); + + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md new file mode 100644 index 00000000000..ffe75554dd8 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md @@ -0,0 +1,77 @@ +--- +id: 65ef1d924ff2e5c7031c6ce8 +title: Step 18 +challengeType: 20 +dashedName: step-18 +--- + +# --description-- + +Create an `else` clause to handle the case where the value of `root` is not `None`, indicating that a root hass been found. If it is not `None`, print the message `'The square root of {square_target} is approximately {root}'`. Remember to format using an f-string. + +# --hints-- + +You should create an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[1] == _Node()`)); + } +}) + +``` + +You should print `f'The square root of {square_target} is approximately {root}'` within the `else` body. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_bodies()[1].is_equivalent("print(f'The square root of {square_target} is approximately {root}')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md new file mode 100644 index 00000000000..1a2bb01cf56 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md @@ -0,0 +1,68 @@ +--- +id: 65ef1dd722f6e7c8294eeec4 +title: Step 19 +challengeType: 20 +dashedName: step-19 +--- + +# --description-- + +Finally, return the value of `root` from the `square_root_bisection` function. + +# --hints-- + +You should return `root` at the end of the function. + +```js +({ + test: () => + { + const pyClassStr = runPython(`str(_Node(_code).find_function("square_root_bisection"))`); + assert.match(pyClassStr, /return\s*root/) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md new file mode 100644 index 00000000000..7904b9bceab --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md @@ -0,0 +1,70 @@ +--- +id: 65ef1e10268f8ec9121446d1 +title: Step 20 +challengeType: 20 +dashedName: step-20 +--- + +# --description-- + +Outside the function definiton, create a variable `N` and assign the value of `16` to it. + +# --hints-- + +You should have the variable `N = 16` outside the function definition. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_variable("N").is_equivalent("N = 16")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md new file mode 100644 index 00000000000..71da1b62c03 --- /dev/null +++ b/curriculum/challenges/chinese-traditional/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md @@ -0,0 +1,115 @@ +--- +id: 65ef1eac497754cafa12a26c +title: Step 21 +challengeType: 20 +dashedName: step-21 +--- + +# --description-- + +Call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +Experiment with larger values. + +With this, you have successfully implemented the bisection method to find the square root of a number. + +# --hints-- + +You should call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +```js +({ + test: () => assert(runPython(`_Node(_code).has_call("square_root_bisection(N)")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- +N = 16 + +--fcc-editable-region-- + +``` + +# --solutions-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +N = 16 +square_root_bisection(N) +``` diff --git a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ef9b03c81a63668521804de.md b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ef9b03c81a63668521804de.md index 9a41be1ac3d..5d71e8c4243 100644 --- a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ef9b03c81a63668521804de.md +++ b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ef9b03c81a63668521804de.md @@ -7,7 +7,7 @@ dashedName: step-48 # --description-- -請注意,可以同時選擇兩個單選按鈕。 爲了使選擇一個單選按鈕自動取消選擇另一個,兩個按鈕必須有具有相同值的 `name` 屬性。 +請注意,可以同時選擇兩個單選按鈕。 To make it so selecting one radio button automatically deselects the other, both buttons must have a `name` attribute with the same value. Here is an example of two radio buttons with the same `name` attribute: diff --git a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md index 09b21967f04..9cdfe09d766 100644 --- a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md +++ b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md @@ -7,7 +7,7 @@ dashedName: step-8 # --description-- -To see the `cat-head` element, give it a linear gradient background with `#5e5e5e` at `85%` and `#45454f` at `100%`. +To see the `.cat-head` element, give it a linear gradient background with `#5e5e5e` at `85%` and `#45454f` at `100%`. You might not notice the difference between these two colors, but they are there. diff --git a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md index 5630ab957df..f8ef57112f0 100644 --- a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md +++ b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md @@ -11,7 +11,7 @@ Inside your `.cat-ears` element, create two `div` elements with the classes `cat # --hints-- -You should not change the existing `div` element with the class `car-ears`. +You should not change the existing `div` element with the class `cat-ears`. ```js assert(document.querySelectorAll('div.cat-ears').length === 1); diff --git a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md index 4d63bd4f581..aa3e47a8da9 100644 --- a/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md +++ b/curriculum/challenges/chinese-traditional/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md @@ -11,7 +11,7 @@ The last position property value is `sticky`. `sticky` positioning is a hybrid o Change the value of the `position` property of `.cat-head` to `sticky`, set `top` to `0`, then remove `left` and its value. -**Note**: To see how `sticky` works, you have to place a couple of texts before and after your `.cat-head` `div` element. If you scroll up after that, you'll see that the `.cat-head` gets stuck to the top and remains there. +**Note**: To see how `sticky` works, you have to place a couple of texts before and after your `.cat-head` `div` element. If you scroll down after that, you'll see that the `.cat-head` gets stuck to the top and remains there. # --hints-- diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md index 0f93285cb97..5f212983dbc 100644 --- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md +++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md @@ -61,7 +61,7 @@ while (continueLoop) { --fcc-editable-region-- --fcc-editable-region-- -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md index bf40abef119..3f935935d65 100644 --- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md +++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md @@ -44,7 +44,7 @@ let done = 0; while (continueLoop) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md index 9c976287a58..38f1716a030 100644 --- a/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md +++ b/curriculum/challenges/chinese-traditional/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md @@ -48,7 +48,7 @@ let done = 0; while (done !== count) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/chinese-traditional/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md b/curriculum/challenges/chinese-traditional/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md index 2d763fe6d49..4137ac6a945 100644 --- a/curriculum/challenges/chinese-traditional/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md +++ b/curriculum/challenges/chinese-traditional/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md @@ -23,15 +23,7 @@ Test value of `__name__` ```js ({ - test: () => assert(__pyodide.runPython(`__name__ == '__main__'`)) -}) -``` - -Test __locals and __pyodide - -```js -({ - test: () => assert(__pyodide.runPython(`__locals.get('add')(4,5) == 9`)) + test: () => assert(runPython(`__name__ == '__main__'`)) }) ``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md index d2139487de3..de4fa3e7ee3 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md @@ -1,6 +1,5 @@ --- id: 658111239f39a01c8f095c44 -videoId: nLDychdBwUg title: "Dialogue 1: What Motivates the Team?" challengeType: 21 dashedName: dialogue-1-what-motivates-the-team @@ -13,3 +12,275 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Maria", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.5, + "dialogue": { + "text": "Hey Maria, I have a question… Do you know what motivates the team?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 4.9, + "finishTime": 7.4, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 8.7, + "finishTime": 12.3, + "dialogue": { + "text": "Hi Brian! Well, one thing that really motivates me is learning new things.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 12.7, + "finishTime": 16, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 16.5, + "finishTime": 18.2, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 19.7, + "finishTime": 20.9, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 21.3, + "finishTime": 24.7, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 25, + "finishTime": 27.2, + "dialogue": { + "text": "But you know what demotivates me sometimes?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 27.7, + "finishTime": 32.6, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 33.1, + "finishTime": 37.3, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 37.7, + "finishTime": 39.7, + "dialogue": { + "text": "Well, collaborating with our creative team", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 39.7, + "finishTime": 42.5, + "dialogue": { + "text": "and brainstorming many ideas really inspires me.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 42.8, + "finishTime": 44.6, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 45.5, + "finishTime": 49, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 49.3, + "finishTime": 53.6, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 54, + "finishTime": 55.5, + "dialogue": { + "text": "It is really frustrating.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 56.5, + "finishTime": 58.4, + "dialogue": { + "text": "Yeah, technical glitches are complicated", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 58.4, + "finishTime": 61, + "dialogue": { + "text": "and there's not much we can do other than try to solve them.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 62, + "finishTime": 63.3, + "dialogue": { + "text": "But do you know what else is great?", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 63.7, + "finishTime": 66.7, + "dialogue": { + "text": "Seeing the team's enthusiasm after solving these issues.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 67.1, + "finishTime": 69.8, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 71.3, + "finishTime": 75.4, + "dialogue": { + "text": "Yeah. Wow. You know what? This was really a motivating talk.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 75.7, + "finishTime": 77.1, + "dialogue": { + "text": "Thanks for sharing your thoughts.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 77.7, + "finishTime": 79.8, + "dialogue": { + "text": "Anytime. It's good to have these discussions.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 80, + "finishTime": 81.6, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "right" + } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 82.1 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 82.6 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md index 5eb9cbab87f..bd40d89ce39 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-6 --- - + # --description-- @@ -18,7 +15,7 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ## --sentence-- -`Well, one thing that really motivates me is _ new things.` +`Hi, Brian. Well, one thing that really motivates me is _ new things.` ## --blanks-- @@ -27,3 +24,47 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ### --feedback-- This word is a gerund, the `-ing` form of the verb used as a noun, indicating the action or process of gaining knowledge. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md index 57d5a2b1a4d..279e2861a88 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-5 --- - + # --description-- @@ -20,7 +17,7 @@ When you add an `s` at the end of a word, like `things`, it means you are talkin ## --sentence-- -`Hi Brian! _, one _ that really motivates me _ learning new _.` +`Hi, Brian! _, one _ that really motivates me _ learning new _.` ## --blanks-- @@ -53,3 +50,47 @@ This is the verb `to be` conjugated in the third person singular. ### --feedback-- Maria uses this word to talk about more than one item or idea she likes to learn. It is the plural form of `thing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md index eee61930dcc..3ecb0ccb702 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-7 --- - + # --description-- @@ -51,3 +48,47 @@ learning new things ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md index 053ae896f0b..80d98bbbc33 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-8 --- - + # --description-- @@ -37,3 +34,47 @@ This word is a gerund describing the activity Maria enjoys related to discoverin ### --feedback-- Another gerund that follows `and`, indicating another activity Maria enjoys, which is about getting better at something. It also ends in `-ing` and serves as a noun. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 15.04 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.28, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.78 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md index fbe4dcc505d..cfa8469782b 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-10 --- - + # --description-- @@ -26,7 +23,7 @@ In `I love exploring many new technologies`, how is `exploring` used? ## --answers-- -As a present continuous +As a verb in the present continuous structure ### --feedback-- @@ -34,7 +31,7 @@ Present continuous are for actions happening now. This is not showing an action --- -As a simple present verb +As a verb in the simple present structure ### --feedback-- @@ -42,11 +39,11 @@ Simple present verbs don't end in `-ing`. --- -As a gerund +As a verb in the gerund form --- -As a past participle +As a verb in the past participle form ### --feedback-- @@ -55,3 +52,47 @@ Past participles are for perfect tenses or as adjectives. This is not used like ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 6.50, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills. It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 7.00 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md index 80690caccd2..252cf48c05b 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-18 --- - + # --description-- @@ -31,3 +28,47 @@ Adding a prefix to a word can change its meaning. ### --feedback-- Maria uses an adjective ending in `-ing` to describe a feeling that is the opposite of `motivating`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 32.22, + "finishTimestamp": 36.08 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.86, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.36 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md index 9001228085f..2ea50eff48d 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-11 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to the audio and complete the sentence. ### --feedback-- This word is used when someone listens to what another person says. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 19.86 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 2.68 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md index f00bebea879..042955730aa 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-12 --- - + # --description-- @@ -49,3 +46,47 @@ This word means to develop or become bigger or more advanced. It ends with `-ing ### --feedback-- This word is related to work or a career. It describes doing something in a way that shows good skills and behavior at a job. it ends with `-ly` + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 20.28, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md index 885332a3dfc..008035b84e7 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-13 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on how skill improvement fits into overall personal and professional dev ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.98, + "dialogue": { + "text": "That's great to hear, Maria. Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.48 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md index a99fd602832..e087041f3d9 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-14 --- - + # --description-- @@ -53,3 +50,65 @@ He's adding to the conversation, not changing the topic. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 26.26 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 2.60, + "finishTime": 5.64, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot,", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 6.02, + "finishTime": 8.58, + "dialogue": { + "text": "but you know what demotivates me sometimes?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 9.08 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md index 0bcef38811f..ed340f1a31c 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md @@ -28,4 +28,48 @@ Listen to the audio and complete the sentence. ### --feedback-- -This word means feeling very happy and eager. +This word means feeling very happy and eager. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 15.32, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.94, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.44 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md index b425e084763..cf6dcc31710 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-16 --- - + # --description-- @@ -55,3 +52,47 @@ This phrase means having plenty of time, which is different from what Brian mean ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md index b5708ac00fe..8de15f47d1c 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-17 --- - + # --description-- @@ -47,3 +44,47 @@ This word is a preposition used to compare or illustrate a similarity to somethi ### --feedback-- It means you are doing something quickly because you do not have much time. It ends with `-ing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md index 5293029060e..f74bac67a8c 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-20 --- + + # --description-- The word `brainstorming` refers to a group discussion to produce ideas and solve problems. @@ -46,3 +48,47 @@ It means adhering to specific instructions, which is not the same as the word. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md index ea82aef1538..1b4aea4a2b1 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-28 --- - + # --description-- @@ -18,7 +15,7 @@ The phrase `slow down` means to decrease in speed or reduce the rate of progress ## --sentence-- -`The problem is encountering many technical issues that make our progress _ _.` +`The problem is encountering many technical issues that _ our progress _.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to describe a decrease in speed or pace. ### --feedback-- This adverb complements the phrase to indicate a reduction or decrease in intensity, speed, or amount. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md index ed1c423927b..bd8c7fa6444 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-32 --- + + # --description-- The phrase `other than` indicates the presence of an alternative or different option. @@ -46,3 +48,47 @@ It means the singular or exclusive option, which is not the same as the phrase. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md index d2a4201ca63..9712d6a3279 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-35 --- - + # --description-- @@ -43,3 +40,47 @@ This possessive adjective is used to refer to something that belongs to the pers ### --feedback-- This noun refers to the reason or reasons one has for acting or behaving in a particular way. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 66.12, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 3.68, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.18 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md index 8f432d36f95..c5b54c0b913 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-38 --- - + # --description-- @@ -29,3 +26,47 @@ In the dialogue, Maria talks about the importance of discussions to help them re ### --feedback-- This verb is used to make someone think of something they might have forgotten. It brings something back into someone's mind. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 76.52, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.08, + "dialogue": { + "text": "Anytime. It's good to have these discussions. It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.58 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md index ba9e43efcb6..974459e9326 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-39 --- - + # --description-- @@ -43,3 +40,47 @@ This pronoun refers to the speaker and at least one other person, indicating a c ### --feedback-- This word is used in the context of continuing forward or persevering in a particular action or state. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 79.06, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.54, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.04 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md index 2f8c34f4dbf..c1b55b444af 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md @@ -1,6 +1,5 @@ --- id: 658160772584ba319849f910 -videoId: nLDychdBwUg title: "Dialogue 2: Asking How Someone Feels" challengeType: 21 dashedName: dialogue-2-asking-how-someone-feels @@ -13,3 +12,239 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Alice", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Tom", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Alice", + "startTime": 2, + "finishTime": 5.6, + "dialogue": { + "text": "Hi Tom, you look a bit down these days. Is everything okay?", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 6.3, + "finishTime": 9.5, + "dialogue": { + "text": "Hey Alice, yeah, I feel a bit demotivated.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 9.8, + "finishTime": 13.6, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 13.8, + "finishTime": 16.7, + "dialogue": { + "text": "It's exhausting, and it feels like I'm constantly running", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 16.7, + "finishTime": 18.1, + "dialogue": { + "text": "without knowing where I'm going.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 18.9, + "finishTime": 22.7, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 23.4, + "finishTime": 25.7, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 26.2, + "finishTime": 28.8, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 28.8, + "finishTime": 30.6, + "dialogue": { + "text": "instead of working together as a team.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 31.3, + "finishTime": 34.7, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 35, + "finishTime": 38.4, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 38.9, + "finishTime": 41.7, + "dialogue": { + "text": "Sometimes, it feels like we're meeting for no reason,", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 41.7, + "finishTime": 44.3, + "dialogue": { + "text": "and it's hard to find time to actually work on projects.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 45, + "finishTime": 48.4, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 49, + "finishTime": 52.6, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 52.6, + "finishTime": 56.6, + "dialogue": { + "text": "without any variation. It feels like I'm wasting my skills and creativity.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 57.06, + "finishTime": 59, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 59.6, + "finishTime": 62.8, + "dialogue": { + "text": "Repeating the same tasks over and over can be demotivating.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 63.2, + "finishTime": 66.4, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 66.8, + "finishTime": 69.4, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation,", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 69.4, + "finishTime": 71.3, + "dialogue": { + "text": "and it's good to share and support each other.", + "align": "left" + } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 71.8 + }, + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 72.3 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md index b8674840c93..9a3003405af 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-40 --- - + # --description-- @@ -22,7 +19,7 @@ In this conversation, Alice notices something about Tom's mood and asks if he's ## --sentence-- -`Hi Tom, you look a bit _ _ days. Is everything okay?` +`Hi, Tom. You look a bit _ _ days. Is everything okay?` ## --blanks-- @@ -39,3 +36,47 @@ This word is used to describe feeling sad or unhappy. It's like when you're not ### --feedback-- This word is used with `days` to talk about the current time or the recent period. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 0.98, + "finishTimestamp": 4.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.60, + "dialogue": { + "text": "Hi, Tom. You look a bit down these days. Is everything okay?", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.10 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md index 8fe09a43d89..fdd78d7f84d 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-41 --- - + # --description-- @@ -20,7 +17,7 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ## --sentence-- -`Hey Alice, yeah, I feel a bit _.` +`Hey, Alice. Yeah, I feel a bit _.` ## --blanks-- @@ -29,3 +26,47 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ### --feedback-- This word is used to describe how Tom feels. It ends with `ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 8.48 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md index a8f6062add9..e30ea2d793a 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-42 --- - + # --description-- @@ -46,8 +43,52 @@ This word means `lacking` or `not having` something. --- -`break` +`breaks` ### --feedback-- -This word refers to a short period of rest or pause from work or activity. +This word refers to a short period of rest or pause from work or activity. Use the plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 8.84, + "finishTimestamp": 12.60 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.76, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.26 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md index 90185d888a6..b19719a1211 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-43 --- - + # --description-- @@ -45,3 +42,47 @@ This word means something is happening all the time or very often. ### --feedback-- This word is used to indicate the absence of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 12.82, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 5.30, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.80 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md index b6f27b9c9b9..524c4be5635 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-44 --- - + # --description-- @@ -18,7 +15,7 @@ Tom talks about what's making him feel demotivated. Let's figure out what is bot ## --text-- -What is making Tom feel demotivated and why? +What is making Tom feel demotivated? ## --answers-- @@ -51,3 +48,65 @@ Reflect on Tom's words about his work routine and how it makes him feel. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.54, + "finishTime": 8.3, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 8.52, + "finishTime": 12.82, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 13.32 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md index 23f853581be..b084d8c5f2d 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-45 --- - + # --description-- @@ -51,3 +48,47 @@ She understands how Tom feels ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 18.98 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 2.28, + "dialogue": { + "text": "I totally get that, Tom.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 2.78 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md index 95b626db8ab..18b3ede5a71 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-46 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working more hours than what is normally required, often beyond ### --feedback-- This word describes something that makes you feel very tired, like it's taking all your energy away. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 21.72 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.02, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.52 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md index 8e581dc301d..143b260cab0 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-47 --- - + # --description-- @@ -35,3 +32,47 @@ This word means managing or handling, especially when the situation is challengi ### --feedback-- This word, in the context of the office, refers to the social and power dynamics among coworkers and within the workplace environment. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 24.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.52, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.02 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md index ffd2e2364d2..5c132f9bd9c 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-48 --- - + # --description-- @@ -45,3 +42,47 @@ This word means making an effort to do something, often something challenging. ### --feedback-- This word is about doing tasks, especially with others to achieve a common goal or finish a project. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 25.02, + "finishTimestamp": 29.38 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.36, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.86 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md index eed7315d9fd..1c59d0c36f8 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-49 --- - + # --description-- @@ -51,3 +48,65 @@ Reflect on the specific aspect of work that Alice mentions she hates dealing wit ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 29.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.9, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 5.64, + "finishTime": 7.96, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 8.4, + "finishTime": 12.88, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 13.38 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md index 008029728ad..89639635494 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-50 --- - + # --description-- @@ -22,11 +19,11 @@ Tom is agreeing with Alice about a specific aspect of work that they find unplea ## --blanks-- -`dealing` +`Dealing` ### --feedback-- -This word means managing or handling something, often implying that it's not an easy or enjoyable task. +This word means managing or handling something, often implying that it's not an easy or enjoyable task. Don't forget the capitalization. --- @@ -35,3 +32,47 @@ This word means managing or handling something, often implying that it's not an ### --feedback-- In the context of an office, this word refers to the social and power dynamics among coworkers. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 30.08, + "finishTimestamp": 33.46 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md index 33c828a005d..eb1ae62b875 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-51 --- - + # --description-- @@ -45,3 +42,47 @@ This word is part of a expression that means something is making Tom upset or an ### --feedback-- This word is used when you're talking about experiencing something, like when you have a lot of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md index f182b582c7f..9e516b17b69 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-52 --- - + # --description-- @@ -51,3 +48,47 @@ He wishes for even more meetings ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md index 43b8ae258c9..f457d5cb4c2 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-53 --- - + # --description-- -Listen to the audio and answer the question. +Listen to the audio and fill in the blanks. # --fillInTheBlank-- @@ -51,3 +48,47 @@ This word means to discover or locate something. It's often used when you're loo ### --feedback-- This word is used to emphasize what is really true or happening. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md index e12e17d47ff..a0c2ef0d79a 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-54 --- - + # --description-- @@ -51,3 +48,47 @@ They take away time from working on projects ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md index 2bd6b036fb7..97dde90f3cb 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-55 --- - + # --description-- @@ -24,7 +21,7 @@ Alice: I hear you, Tom. Sitting in meetings for hours can be discouraging. ## --sentence-- -`_ in meetings for hours can be _.` +`I hear you, Tom. _ in meetings for hours can be _.` ## --blanks-- @@ -41,3 +38,47 @@ This word describes the action of being seated. It is capitalized. ### --feedback-- This word means something that makes you feel less confident or willing to continue. It ends in `ing`, showing it's describing the effect of the action. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md index da3c221a1f1..30aeb3ff460 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md @@ -5,12 +5,7 @@ challengeType: 19 dashedName: task-56 --- - + # --description-- @@ -53,3 +48,47 @@ Consider what Alice means by `discouraging` in the context of meetings. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md index c60324ba8d3..2957a5033ab 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-57 --- - + # --description-- @@ -43,3 +40,47 @@ This word is used to describe a large number of things grouped together. It's li ### --feedback-- This word refers to having different types or changes in something. It's the opposite of doing the same thing over and over. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 52.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 6.02, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.52 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md index 63d0a5a5643..cf49c33b69a 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-58 --- - + # --description-- @@ -35,3 +32,47 @@ This word means not using something valuable in a good or effective way. It's li ### --feedback-- This word refers to the ability to make new things or think of new ideas. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 53.24, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.34, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 3.84 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md index 540a3a77c0f..e189fc50af5 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-59 --- - + # --description-- @@ -51,3 +48,56 @@ Consider what Alice says directly annoys her versus how she feels about another ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md index ef09e4af19b..a5f87b483bd 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-60 --- - + # --description-- @@ -51,3 +48,56 @@ Think about whether meetings are mentioned in the context of wasting skills and ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md index fa7b1328561..7f182561d7f 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-61 --- - + # --description-- @@ -39,3 +36,47 @@ This auxiliary verb is used here to emphasize the verb that follows it, making t ### --feedback-- This adjective describes feelings of annoyance or irritation, often because of obstacles or difficulties. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 58.00 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.14, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 3.64 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md index e2e6ee3f118..d0f7a57efaa 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-62 --- - + # --description-- @@ -55,3 +52,47 @@ This word, when used twice with `and` in between, emphasizes the repetition of a ### --feedback-- This word describes something that reduces your desire or willingness to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 61.78 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "That does sound frustrating, Alice. Repeating the same tasks over and over can be demotivating.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md index 27d721f5a0a..bef09034af7 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-63 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to describe an emotional experience or sensation, in this case ### --feedback-- This word is the plural of `this`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md index 1721b02d9e4..c2eefbb7b7d 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-65 --- - + # --description-- @@ -51,3 +48,47 @@ For listening to him ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md index 80ad6cb9859..dc1a51e3b48 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-66 --- - + # --description-- @@ -51,3 +48,47 @@ This word means to tell others about your own experiences, thoughts, or feelings ### --feedback-- This word involves giving help or encouragement, showing you are there for someone. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md index 88359a9631c..ae0f2da0a0d 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-67 --- - + # --description-- @@ -51,3 +48,47 @@ The value of sharing feelings and supporting one another ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md index 01535bb27f7..e34ef923278 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-64 --- - + # --description-- @@ -44,3 +41,46 @@ This word is the middle part of the phrase used to casually introduce new inform This word completes the phrase, indicating a casual addition or shift in the conversation. +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md index abd512abbb8..fb7e5ccda2d 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md @@ -1,6 +1,5 @@ --- id: 65a351bd69b0b72d7ed24eb5 -videoId: nLDychdBwUg title: "Dialogue 3: Talking About Motivations to Pursue a Career" challengeType: 21 dashedName: dialogue-3-talking-about-motivations-to-pursue-a-career @@ -13,3 +12,212 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Lisa", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5, + "dialogue": { + "text": "Hey Lisa, what motivated you to choose a career in tech?", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 6, + "finishTime": 8.5, + "dialogue": { + "text": "One of my main motivations was the financial stability", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 8.8, + "finishTime": 10, + "dialogue": { + "text": "that tech jobs can provide.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 10.4, + "finishTime": 12.8, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 13.3, + "finishTime": 16.3, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 17.4, + "finishTime": 19.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 19.8, + "finishTime": 24, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 24, + "finishTime": 26, + "dialogue": { + "text": "and have different perspectives.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 26.8, + "finishTime": 29.2, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 29.2, + "finishTime": 32.1, + "dialogue": { + "text": "Another thing was the chance to be part of projects", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 32.1, + "finishTime": 34.2, + "dialogue": { + "text": "that push the limits of innovation and creativity.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 34.9, + "finishTime": 36, + "dialogue": { + "text": "I'm with you on that one.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 36.1, + "finishTime": 39.6, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 39.7, + "finishTime": 43.1, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 44.3, + "finishTime": 47.3, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 47.3, + "finishTime": 49.6, + "dialogue": { + "text": "and finding practical solutions is really thrilling.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 50.3, + "finishTime": 53, + "dialogue": { + "text": "Knowing that we solved problems is really exciting, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 53.4, + "finishTime": 56.7, + "dialogue": { + "text": "I hope we keep getting as much motivation from it as we can.", + "align": "left" + } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.2 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.7 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md index e165f760c08..23c160c642f 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-68 --- - + # --description-- @@ -18,7 +15,7 @@ Brian: Hey Lisa, what motivated you to choose a career in tech? ## --sentence-- -`Hey Lisa, what _ you to _ a career in tech?` +`Hey, Lisa, what _ you to _ a career in tech?` ## --blanks-- @@ -34,4 +31,48 @@ This word means something gave you a reason or desire to do something. It ends w ### --feedback-- -This verb is about making a decision between different options. +This verb is about making a decision between different options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md index 94e4ccd2b3e..3a96b95c93a 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-69 --- - + # --description-- @@ -51,3 +48,47 @@ What motivated her to pick a tech career ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md index 47d7700e414..9dc5f7bc32d 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-70 --- - + # --description-- @@ -37,3 +34,47 @@ The most important. ### --feedback-- Being steady, meaning you don't have to worry too much about it. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md index afed572b3be..22a27d6cb43 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-71 --- - + # --description-- @@ -35,3 +32,47 @@ This word is a past tense verb used to describe a state or condition in the past ### --feedback-- This verb means to give or supply something needed, like help, information, or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md index a5031402575..f006bbf44d1 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-72 --- - + # --description-- @@ -52,3 +48,71 @@ Reflect on Lisa's statement and whether travel is mentioned as a motivation. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.50 + }, + { + "character": "Lisa", + "opacity": 1, + "startTime": 5.50 + }, + { + "character": "Lisa", + "startTime": 5.82, + "finishTime": 10.02, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md index e71f55301a3..4b20a9bd448 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-73 --- - + # --description-- @@ -37,3 +34,47 @@ This verb means giving permission or making it possible to do something. this ve ### --feedback-- This noun describes the feeling of being certain about your abilities or something you're going to do. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 9.48, + "finishTimestamp": 11.90 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.42, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 3.92 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md index 4f8c68dfebb..ca8b0a42958 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-74 --- - + # --description-- @@ -39,3 +36,47 @@ This word refers to different areas of work or study. It's plural here because s ### --feedback-- This verb is used to talk about successfully reaching a goal, especially after putting in effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 12.16, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md index d0951b06bde..84aca093d52 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-75 --- - + # --description-- @@ -51,3 +48,65 @@ Lisa doesn't mention working less. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md index 1e5b8911585..9bd217faa04 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-76 --- - + # --description-- The words `much` and `many` are used to talk about quantity. @@ -52,3 +49,65 @@ Reflect on Lisa's statement about what makes tech jobs stand out for her. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md index 38a5ed3758e..013e56a7705 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-77 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to Brian's response to Lisa and fill in the missing word that shows he st ### --feedback-- This adverb is used to emphasize the truth or importance of a statement, showing strong agreement or belief. it ends with `ly`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 18.38 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.40, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.90 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md index 620135fd503..145afc143d8 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-78 --- - + # --description-- @@ -51,3 +48,47 @@ This word is used to describe different areas of study or work. This word is in ### --feedback-- These are different ways of viewing or thinking about something. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 18.80, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.20, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.70 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md index 5f88ce8ca38..56d23563f4a 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-79 --- - + # --description-- @@ -51,3 +48,56 @@ Consider Brian's interest in working across many fields versus concentrating on ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 3.82, + "finishTime": 10.02, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md index 9867dd455d5..36fa55aa8ae 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-80 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working together with others. Notice it ends with `-ing`, indica ### --feedback-- This adjective describes something that is thrilling or full of energy. It ends with `-ing`, showing a quality or state. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.62, + "finishTimestamp": 28.18 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md index 31ed219cb44..d126871e672 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-81 --- - + # --description-- @@ -45,3 +42,47 @@ TTo extend or go beyond usual limits or boundaries. It's often used to talk abou ### --feedback-- This noun refers to new ideas, products, or methods that improve something or solve problems. It's about coming up with new ways to do things. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 28.38, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md index 976777de56e..19ed243bc7e 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-82 --- - + # --description-- @@ -51,3 +48,56 @@ Consider whether Lisa's motivation is related to work environment or the nature ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.94 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md index cc4a931a4a1..9d83cc465d3 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-83 --- - + # --description-- @@ -52,3 +48,80 @@ He agrees with Lisa ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 34.98 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.45 + }, + { + "character": "Brian", + "opacity": 1, + "startTime": 8.45 + }, + { + "character": "Brian", + "startTime": 8.57, + "finishTime": 10.16, + "dialogue": { + "text": "I'm with you on that one.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.66 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md index 3c748ab456e..c9ec667c225 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-84 --- - + # --description-- @@ -37,3 +34,47 @@ This noun describes the ability to change or adapt easily according to different ### --feedback-- This word refers to the specific functions or positions that individuals can have within a group or organization. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 38.36 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.76 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md index f111304b929..566d8c5e7db 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-85 --- - + # --description-- @@ -20,7 +17,7 @@ Listen carefully and fill in the missing words about what tech roles make possib ## --sentence-- -`They _ us to balance our jobs with personal _ and hobbies.` +`I'm also interested in the flexibility that tech roles offer. They _ us to balance our jobs with personal _ and hobbies.` ## --blanks-- @@ -37,3 +34,56 @@ This verb means to make something possible or to give permission for something. ### --feedback-- This noun refers to things you enjoy doing, like hobbies or activities that catch your attention. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md index 0efe7ddf734..f5aab15821c 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-86 --- - + # --description-- @@ -55,3 +52,56 @@ Is Brian talking about traveling, or is he interested in something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md index 1828c2b24fd..f285c7e7f50 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-87 --- - + # --description-- @@ -45,3 +42,47 @@ This word means discovering or coming up with something, like an answer or solut ### --feedback-- This adjective means very exciting. It often describes something that makes your heart beat faster because it's so exciting or fun. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md index a2b77cc1c45..689b3e667de 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-88 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on the word `satisfaction` and if it suggests feeling tired. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md index 122529e8f39..fd8178da8fc 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-89 --- - + # --description-- @@ -43,3 +40,47 @@ This adjective describes something that is thrilling or causes great enthusiasm. ### --feedback-- This word means receiving or obtaining something. Here, it's also in the `-ing` form, indicating an ongoing action or process. Remember to use double `t`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md index f8bb1a273ee..a72f4990d84 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-90 --- - + # --description-- @@ -53,3 +50,47 @@ Brian talks about being excited by solving problems, not about where to find mot ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md index 93a91f9790d..f0a8796d57b 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md @@ -13,3 +13,221 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Bob", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sarah", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.6, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech?", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 5, + "finishTime": 7, + "dialogue": { + "text": "It's all those amazing gadgets!", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 7.8, + "finishTime": 9.6, + "dialogue": { + "text": "I can see your enthusiasm, Bob!", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 9.9, + "finishTime": 12.3, + "dialogue": { + "text": "Tell me, which tech gadgets are your absolute favorites?", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 13, + "finishTime": 16.2, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 16.3, + "finishTime": 18.9, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health,", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 19.2, + "finishTime": 22.7, + "dialogue": { + "text": "and even helps me stay organized with reminders and notifications.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 23.7, + "finishTime": 26, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 26, + "finishTime": 28.1, + "dialogue": { + "text": "The camera quality, the speed,", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 28.3, + "finishTime": 30.8, + "dialogue": { + "text": "and the number of apps available are what I like the most.", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 31.2, + "finishTime": 33.9, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 34.3, + "finishTime": 37.2, + "dialogue": { + "text": "Gadgets like these are transforming our daily lives.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 37.6, + "finishTime": 40.8, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 41.3, + "finishTime": 44, + "dialogue": { + "text": "I love capturing stunning aerial shots", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 44, + "finishTime": 46.5, + "dialogue": { + "text": "and exploring new angles for photography.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 47.7, + "finishTime": 50.3, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 50.7, + "finishTime": 52.7, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 52.7, + "finishTime": 54.5, + "dialogue": { + "text": "It's amazing how these innovations", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 54.5, + "finishTime": 56.8, + "dialogue": { + "text": "keep making our lives more interesting and connected.", + "align": "right" + } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.3 + }, + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.8 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md index 2f5b51c5efe..1c735765ddb 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-91 --- - + # --description-- @@ -47,3 +44,47 @@ This word is used to point out specific things that are being talked about, in t ### --feedback-- This word refers to small electronic devices or tools that are useful or interesting. It's often used to talk about cool tech items. It is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md index 06bb47f4e2f..7ddc748e75b 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-92 --- - + # --description-- @@ -51,3 +48,47 @@ The latest technology gadgets ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md index 746bfa4615b..96ed9a633c9 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-93 --- - + # --description-- @@ -27,3 +24,47 @@ Sarah: I can see your enthusiasm, Bob! ### --feedback-- This noun describes the feeling of being very excited or interested in something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 8.60 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 2.74, + "dialogue": { + "text": "I can see your enthusiasm, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.24 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md index a7eb6fcbfcb..4f55a749a61 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-94 --- - + # --description-- @@ -22,7 +19,7 @@ Sarah: I can see your enthusiasm, Bob! Tell me, which tech gadgets are your abso ## --sentence-- -`Tell me, _ tech gadgets are your _ favorites?` +`I can see your enthusiasm, Bob! Tell me, _ gadgets are your _ favorites?` ## --blanks-- @@ -39,3 +36,47 @@ This word asks for a specific choice or selection from a known group of items. ### --feedback-- This adjective emphasizes that the choice is the most complete or total among all options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 11.36 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.50, + "dialogue": { + "text": "I can see your enthusiasm, Bob. Tell me, which gadgets are your absolute favorites?", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.00 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md index 09bd788377d..9514f27cc60 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-95 --- - + # --description-- @@ -35,3 +32,47 @@ This preposition is used to show that something belongs to or is part of somethi ### --feedback-- This noun refers to a type of watch that has more features than just telling time, often including apps and internet connectivity. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 15.20 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.66 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md index b247dacc6dd..feadc88525d 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md @@ -5,10 +5,8 @@ challengeType: 22 dashedName: task-96 --- - + + # --description-- `To track` means to follow or monitor the progress, movement, or development of something or someone. @@ -44,3 +42,47 @@ This verb means to monitor or follow the course or progress of something, especi ### --feedback-- This verb means to make it easier or possible for someone to do something by offering services or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md index 99dcae91a0c..2c3332a8708 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-97 --- - + # --description-- @@ -45,3 +42,47 @@ This adjective means arranged in a systematic way, especially on a large scale. ### --feedback-- These are alerts or messages that prompt you to remember tasks or appointments. This word ends with `s`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md index 4d36b7b2989..49fbdc264ee 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-98 --- - + # --description-- @@ -51,3 +48,56 @@ It keeps him connected, tracks his health, and helps him stay organized ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.32, + "finishTime": 10.70, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 11.20 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md index 7185d037ed7..2d1e897054c 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-99 --- - + # --description-- @@ -35,3 +32,47 @@ This word is capitalized and in plural form. ### --feedback-- This word describes advanced mobile phones with extensive computing capabilities and connectivity. It is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 25.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.98 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md index 1f660afcb03..81e873d902e 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-100 --- - + # --description-- @@ -53,3 +50,47 @@ This adjective means something can be accessed or used, like apps in an app stor ### --feedback-- This word is used to indicate the highest degree or the greatest amount of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 25.24, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.60, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.10 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md index 6998dd4ffa5..1e063e1befc 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-101 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on whether design is a factor in Sarah's stated preferences. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.56, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 3.68, + "finishTime": 8.08, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 8.58 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md index dac54e85492..92b3b88cee4 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-102 --- - + # --description-- @@ -43,3 +40,47 @@ This verb means causing a significant change or improvement in something. This w ### --feedback-- This adjective refers to something that happens every day or is part of everyday life. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md index 66cda46110d..6e56479dc8d 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-103 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Bob mentions radio as a factor in transforming daily life. ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md index ec96099aa49..93b5cc92a66 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-104 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to talk about the current period of time or the present days. ### --feedback-- This noun refers to remote-controlled flying machines, often used for photography, racing, or recreation. This word is capitalized. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 39.78 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.20, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.70 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md index 2eb13bfcb4b..7bdc1f302f5 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-105 --- - + # --description-- @@ -43,3 +40,47 @@ This verb involves examining or investigating something in order to learn more a ### --feedback-- This noun refers to the art, practice, or job of taking pictures with a camera, capturing moments, and expressions. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md index 08e3ab9b847..95aa8e526fc 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-106 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective describes something extremely beautiful or impressive. ### --feedback-- In photography, this noun means photographs or the act of taking a photograph. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md index 1b7d3770f1d..f8e77d3a9fe 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-107 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective refers to something related to the air or happening in the sky. ### --feedback-- This noun refers to the specific viewpoints or positions from which photos are taken. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md index c172cb36554..cf2a562eb4c 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-108 --- - + # --description-- @@ -51,3 +48,56 @@ They allow for stunning aerial photography ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.2, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.78, + "finishTime": 9.98, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 10.48 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md index a67e640bd01..64e3aa577d5 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-109 --- - + # --description-- @@ -35,3 +32,47 @@ This adjective in the expression means allowing access, passage, or a view throu ### --feedback-- This noun refers to things that may happen or be the case in the future, often exciting or beneficial opportunities. it is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.48, + "finishTimestamp": 49.32 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.84, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 4.34 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md index a7c5acbe452..9a5e4ff7dc6 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-110 --- - + # --description-- @@ -35,3 +32,47 @@ This noun describes a strong feeling of enthusiasm or excitement for something o ### --feedback-- In this context, this adjective means that a feeling, especially a positive one like enthusiasm, can spread from one person to others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 49.52, + "finishTimestamp": 51.74 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.22, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.72 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md index 0578945ebcc..c64025643be 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-111 --- - + # --description-- @@ -51,3 +48,47 @@ This adjective describes something that arouses curiosity or is enjoyable and en ### --feedback-- This adjective means being in touch with others or having easy access to information, especially through technology. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 51.94, + "finishTimestamp": 56.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.10, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 5.60 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md index bc02e1710e1..fe30597a170 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-112 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on the enthusiasm and positivity in Sarah's statement. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.28, + "finishTimestamp": 55.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 6.26, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob. Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 6.46, + "finishTime": 10.36, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 10.86 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md index ebba772a320..20eaca5ac90 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md @@ -1,6 +1,5 @@ --- id: 65a533f54a5afeff6c6bb996 -videoId: nLDychdBwUg title: "Dialogue 5: Discussing Open-source Software" challengeType: 21 dashedName: dialogue-5-discussing-open-source-software @@ -13,3 +12,284 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Tom", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sophie", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.5, + "dialogue": { + "text": "Hey, Sophie, what motivates you", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 3.8, + "finishTime": 6.9, + "dialogue": { + "text": "to work on open-source software projects in your free time?", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 7.8, + "finishTime": 10.2, + "dialogue": { + "text": "Well, I love contributing to open-source projects!", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 10.5, + "finishTime": 13, + "dialogue": { + "text": "I really like the sense of community and collaboration.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 13.5, + "finishTime": 15.4, + "dialogue": { + "text": "It's incredible how people from around the world", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 15.4, + "finishTime": 17.5, + "dialogue": { + "text": "come together to create something amazing.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 18.2, + "finishTime": 20.4, + "dialogue": { + "text": "Yeah. I checked out some open-source projects,", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 20.5, + "finishTime": 23.1, + "dialogue": { + "text": "but I admit that I have problems with the amount of time", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 23.1, + "finishTime": 24.3, + "dialogue": { + "text": "it can take to contribute.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 24.7, + "finishTime": 27.1, + "dialogue": { + "text": "Sometimes, it can be so time-consuming.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 27.1, + "finishTime": 29.7, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 29.9, + "finishTime": 33.3, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 33.8, + "finishTime": 36.5, + "dialogue": { + "text": "Open source is all about transparency and accessibility,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 36.5, + "finishTime": 38.4, + "dialogue": { + "text": "and that's something I truly believe in.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 39, + "finishTime": 42.2, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 42.7, + "finishTime": 45.7, + "dialogue": { + "text": "For me, I like the idea of practicing my skills", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 45.7, + "finishTime": 48, + "dialogue": { + "text": "and getting recognition for my contributions.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 48.5, + "finishTime": 51.4, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 52.4, + "finishTime": 56, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 56.4, + "finishTime": 58, + "dialogue": { + "text": "there isn't much you can do to save it.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 58.4, + "finishTime": 61.4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 62.2, + "finishTime": 65.2, + "dialogue": { + "text": "That's true. The sustainability of open-source projects", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 65.2, + "finishTime": 67.5, + "dialogue": { + "text": "is something I'm growing to appreciate more.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 67.8, + "finishTime": 69.2, + "dialogue": { + "text": "Thanks for sharing your motivations.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 69.8, + "finishTime": 71.7, + "dialogue": { + "text": "I think I'll see if I can find a project", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 71.7, + "finishTime": 72.8, + "dialogue": { + "text": "to dedicate some spare time to.", + "align": "left" + } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 73.3 + }, + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 73.8 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md index a463dcea5d0..ee5d378ba03 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-113 --- - + # --description-- @@ -37,3 +34,47 @@ This preposition is used to indicate involvement or engagement in a particular a ### --feedback-- This part of the term refers to the origin or starting point, in this case, indicating that the software's foundational code is open and accessible to all. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md index 2d227ef6fe5..1e409d23632 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-114 --- - + # --description-- @@ -51,3 +48,47 @@ Think about whether Tom is asking about skills or the reasons behind an activity ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md index ab28bfe2622..395d2fa3522 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-115 --- - + # --description-- @@ -20,7 +17,7 @@ Sophie: Well, I love contributing to open-source projects! I really like the sen ## --sentence-- -`I really like the sense of _ and _.` +`Well, I love contributing to open-source projects! I really like the sense of _ and _.` ## --blanks-- @@ -37,3 +34,47 @@ Describes a group of people who share common interests or values, especially in ### --feedback-- Refers to the act of working with someone to produce or create something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md index c9e678c193b..e321ce0b307 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-116 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Sophie's enjoyment comes from personal recognition or somethi ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md index 7b9101449a3..6a2c024d0c1 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-117 --- - + # --description-- @@ -45,3 +42,47 @@ Refers to the earth or the globe. ### --feedback-- Indicates the act of joining with others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md index d2ba30725da..3917f0f08f3 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-118 --- - + # --description-- @@ -51,3 +48,47 @@ Sophie talks about working as a group. Is it about being famous or doing somethi ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md index a0b608d8342..a41f1bfc8cb 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-119 --- - + # --description-- @@ -20,7 +17,7 @@ Tom: Yeah. I checked some open-source projects, but I admit that I have problems ## --sentence-- -`Yeah. I checked some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` +`Yeah, I checked out some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` ## --blanks-- @@ -37,3 +34,47 @@ This verb means to confess or acknowledge something, often reluctantly. ### --feedback-- This noun is used to describe the quantity or measure of something, in this case, referring to time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 23.34 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.28, + "dialogue": { + "text": "Yeah, I checked out some open-source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.78 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md index 6bcebcf1558..64acf0261ac 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-120 --- - + # --description-- @@ -18,7 +15,7 @@ Tom "Sometimes, it can be so time-consuming." ## --sentence-- -`Sometimes, it can be _ time-_.` +`Sometimes it can be _ time-_.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to emphasize the degree of something, in this case, how much t ### --feedback-- This word describes activities that use up a lot of time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 23.52, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.64, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.14 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md index 2bbaf6f322f..a2ad29fdb26 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-121 --- - + # --description-- @@ -51,3 +48,56 @@ Think about if Tom says the projects are easy or something else. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Yeah, I checked out some open source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 7.46, + "finishTime": 10.10, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 10.60 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md index 26975fa42d5..52145efc9dc 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-122 --- - + # --description-- @@ -21,7 +18,7 @@ For example, if you say: `I decided to learn a new language and practice every d ## --sentence-- -`It can _ a _.` +`I understand, Tom. It can _ a _.` ## --blanks-- @@ -38,3 +35,47 @@ This word is used to talk about something being true or existing. ### --feedback-- This word means a promise to do something or give your time to it, showing you are ready to work hard and keep your word. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 28.72 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md index 4232fcd5dbb..10d1d55dd1f 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-123 --- - + # --description-- @@ -35,3 +32,47 @@ This verb, in this context, means to tolerate or bear, especially when talking a ### --feedback-- This adjective describes something not open or accessible to the general public or kept for the use of a specific person or group. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md index 25acc5b187b..4920280d317 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-124 --- - + # --description-- @@ -35,3 +32,47 @@ This word, ending in `-ing`, means to observe or witness something happening.. ### --feedback-- Also ending in `-ing`, this word is used to describe the state or condition of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md index e4878ae4f6c..feb206c8d3b 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-125 --- - + # --description-- @@ -37,3 +34,51 @@ This word means being open and clear about things. It ends with `-y`, showing it ### --feedback-- This word is about making things easy for everyone to use or get. It ends with `-ity`, showing it's about the state of being accessible. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 32.52, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 5.74, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.24 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md index 2e6e266c6ab..b1b1c1ca42c 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-126 --- - + # --description-- -Sophie expresses her thoughts on open-source projects.. +Sophie expresses her thoughts on open-source projects. # --question-- @@ -51,3 +48,56 @@ Reflect on Sophie's belief in open source and its benefits. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 7.16, + "dialogue": { + "text": "I understand, Tom. It can be a commitment, but I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.56, + "finishTime": 12.10, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 12.60 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md index 9ef306c9252..e6c5fe030c7 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-127 --- - + # --description-- @@ -35,3 +32,51 @@ This noun refers to the quality of being open and clear, especially about proces ### --feedback-- This noun describes something that provides a reason or incentive for someone to act in a certain way or to put in more effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 41.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md index bbaba54e9e1..e05f1982063 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-128 --- - + # --description-- @@ -37,3 +34,51 @@ This verb means to perform an activity or exercise repeatedly or regularly in or ### --feedback-- This noun refers to the action or process of acknowledging someone's efforts, achievements, or qualities. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 41.5, + "finishTimestamp": 47.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.62, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.12 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md index a821137445a..5d15ffd7545 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-129 --- - + # --description-- @@ -35,3 +32,51 @@ This adjective is used to describe something that is very good or impressive. ### --feedback-- This adjective means having the ability, power, or qualities necessary to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 47.54, + "finishTimestamp": 50.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.9, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.4 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md index 76ee25756a6..045d8463245 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-130 --- - + # --description-- @@ -51,3 +48,69 @@ Reflect on whether Tom's attraction to open-source is about tight schedules. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 50.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.42, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.88, + "finishTime": 10.2, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 10.72, + "finishTime": 13.62, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 14.12 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md index f47924c5a21..763fa02b646 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-131 --- - + # --description-- @@ -18,7 +15,7 @@ Sophie: Also, when software becomes obsolete because it's no longer maintained, ## --sentence-- -`Also, when software becomes _, there isn't _ you can do to _ it.` +`Also, when software becomes _ because it's no longer maintained, there isn't _ you can do to _ it.` ## --blanks-- @@ -43,3 +40,51 @@ This word is used to indicate a small amount or degree; not a lot. ### --feedback-- This verb means to keep safe or rescue from harm or danger, in this context, to try and make something usable again. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md index 27b0dbb43cf..a187bb8b293 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-132 --- - + # --description-- @@ -43,3 +40,51 @@ Something that once was true or possible is not the case anymore. ### --feedback-- This contraction of `is not` is used to express the negation of the statement that follows, indicating a limitation or impossibility. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md index 8941733f8b9..ca97fa188f9 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-133 --- - + # --description-- @@ -51,3 +48,51 @@ It can't be used effectively anymore ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md index e225360b121..baadc6b07e8 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-134 --- - + # --description-- @@ -18,7 +15,7 @@ AUDIO REFERENCE: ## --sentence-- -`With open-_, there's always a _ for continuous improvement.` +`With open _, there's always a _ for continuous improvement.` ## --blanks-- @@ -35,3 +32,51 @@ Refers to a model where the source code is available for anyone to see, modify, ### --feedback-- This noun means an opportunity or possibility for something to happen or be done, especially something desirable. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md index 410699942ed..15c83340f6f 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-135 --- - + # --description-- @@ -35,3 +32,51 @@ It indicates an ongoing, unending process of enhancement or development. ### --feedback-- It refers to the act of making something better, more effective, or more efficient. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md index a8c886124e7..7718697bd96 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-137 --- - + # --description-- @@ -27,3 +24,51 @@ Tom: The sustainability of open-source projects is something I'm growing to appr ### --feedback-- It refers to the ongoing development of open-source projects over the long term. it ends with `-y`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md index dcc88c43208..d6ae5f89d89 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-138 --- - + # --description-- -`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time,` means they might not like them at first, but after some timethey start to like them more. +`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time` means they might not like them at first, but after some timethey start to like them more. # --fillInTheBlank-- @@ -34,4 +31,52 @@ This word means being able to continue over time in a good way. ### --feedback-- -Starting to like something more as you understand it better. +Starting to like something more as you understand it better. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md index ecd1d6e7c95..abc9cf2415f 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-139 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on Tom's statement about sustainability and appreciation, not complexity ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md index a6a32b631e8..87c40eaf830 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-140 --- - + # --description-- @@ -47,3 +44,51 @@ This verb means to discover or locate something after searching for it. ### --feedback-- Describes time that is available to use as you wish, not taken up by work or other obligations. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md index bd2fddb1bb4..52d0740b1db 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-141 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on whether Tom's interest is in language learning or engaging in a proje ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md index ea7dbd6dc1e..05dc28f6ddc 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-1 --- - + # --description-- @@ -18,7 +15,7 @@ Listen to what Brian asks Maria. Pay attention to the verbs he uses. ## --sentence-- -`Hey Maria, I _ a question. Do you know what _ the team?` +`Maria, I _ a question. Do you know what _ the team?` ## --blanks-- @@ -35,3 +32,47 @@ This verb is used when someone is in possession of something or wants to express ### --feedback-- This word means to give someone a reason to do something. This verb in conjugated in the third person. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 3.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.02 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md index d39e86e67e9..ef6b246a2e4 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-2 --- - + # --description-- @@ -39,3 +36,47 @@ This word is used to indicate the reason or cause of something. It is conjugated ### --feedback-- It ends with `-ed` because it's an adjective that comes from a verb. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 3.92, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.50, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.00 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md index 5c39c1c7312..050241fa5e6 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-3 --- - + # --description-- @@ -20,7 +17,7 @@ Listen to the audio and complete the sentence. ## --sentence-- -`Hey Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` +`Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` ## --blanks-- @@ -37,3 +34,56 @@ Think about the word that means to give someone a reason to do something right n ### --feedback-- This word describes how someone feels when they have a reason or desire to do something. This word ends with `-ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md index 4a6aa89ed04..90a6bbe82b3 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md @@ -5,20 +5,17 @@ challengeType: 19 dashedName: task-4 --- - + # --description-- -In the dialogue, Brian asks three questions but they are all connected. +In the dialogue, Brian asks a couple of related questions. # --question-- ## --text-- -`What is Brian asking Maria about?` +What is Brian asking Maria about? ## --answers-- @@ -51,3 +48,56 @@ The conversation is centered around motivation, not the physical location of whe ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md index 3e923e63532..f725307b614 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-21 --- - + # --description-- @@ -36,3 +33,46 @@ This word means working together with others on a project or task. It ends with This word means thinking of many ideas together with a group of people. It ends with `-ing`. +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md index 1c4102ed1d3..2522ee2b5e1 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-22 --- - + # --description-- @@ -51,3 +48,47 @@ Maria refers to her creative team, not her friends, as her collaborators. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.28 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.28 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md index c3f28429a68..ab0e4646869 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-23 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to create or produce something, especially ideas or solutions. ### --feedback-- This word refers to ideas or plans that are used in thinking, discussion, or creating something new. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 41.84, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.78, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.28 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md index c2510030f2c..8795bdf6d10 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-24 --- - + # --description-- @@ -51,3 +48,56 @@ Collaborating with the creative team ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.70, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.14, + "finishTime": 7.92, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 8.42 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md index 3c6ee35860c..b801e7efce9 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-25 --- - + # --description-- @@ -35,3 +32,47 @@ This word means working together with others to achieve a goal. This word is cap ### --feedback-- This word refers to the use of imagination or original ideas to create something. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 48.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.22 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md index a9680b0824a..75c938c595f 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-27 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to find something or someone without planning to, especially pro ### --feedback-- This word is used for problems with machines or computers that need special knowledge to understand or fix. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md index 5ee0b89f981..89a97ac83d7 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-29 --- - + # --description-- @@ -27,3 +24,47 @@ When something is `frustrating`, it makes you feel upset or annoyed because you ### --feedback-- This word is used when something makes you feel upset or annoyed because it is difficult or impossible to deal with. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 53.02, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.50, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.00 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md index 1f9e7b21387..02733f0f66c 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-30 --- - + # --description-- @@ -51,3 +48,65 @@ Does having many ideas make Brian frustrated, or is it something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 5.02, + "finishTime": 9.34, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 9.74, + "finishTime": 11.24, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 11.74 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md index 3dddb17e8ef..47e9d5633b4 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-31 --- - + # --description-- @@ -35,3 +32,47 @@ This word means little problems with things like computers or apps. When there a ### --feedback-- This word means to make an effort to do something, especially when it's hard. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md index fe21921444c..ce9ced73581 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-33 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether taking a break is mentioned as a way to deal with glitches. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md index 69d94c303e5..7c44898f823 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-34 --- - + # --description-- @@ -37,3 +34,47 @@ This word means being very excited or eager about something. It's like when you ### --feedback-- This word means finding a way to fix a problem. It's like when you figure out the answer to a difficult question. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.76, + "finishTimestamp": 65.66 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.90, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.40 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md index 0365cb0e9f0..17d79cd22ec 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md @@ -6,10 +6,7 @@ dashedName: task-36 --- - + # --description-- @@ -52,3 +49,56 @@ Reflect on whether the speed of solving problems is what Maria highlights as mot ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.96, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.7, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.16, + "finishTime": 8.84, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 9.34 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md index 7525fdadd5f..39df7aceed5 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-37 --- - + # --description-- @@ -18,7 +15,7 @@ In this part of the conversation, Brian talks about how the talk made him feel a ## --sentence-- -`Yeah. Wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` +`Yeah, wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` ## --blanks-- @@ -35,3 +32,47 @@ This word means something that gives you energy or a reason to do something. It' ### --feedback-- This word means giving something that you have to others. It's like when you tell someone your ideas or feelings. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 70.38, + "finishTimestamp": 76.10 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 6.72, + "dialogue": { + "text": "Yeah, wow. You know what? This was a really motivating talk. Thanks for sharing your thoughts.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.22 + } + ] +} +``` diff --git a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md index 6bb2b29cd3b..b1bcee11103 100644 --- a/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md +++ b/curriculum/challenges/chinese-traditional/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-136 --- - + # --description-- @@ -51,3 +48,60 @@ Reflect on the connection between updates and user experience Sophie suggests. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.02, + "finishTime": 10.02, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md index d31644706d3..4168bed9f2e 100644 --- a/curriculum/challenges/chinese/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md +++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md @@ -26,7 +26,7 @@ HTML5 的 `audio` 标签用于呈现音频内容或音频流,它也具有语 # --instructions-- -是时候让 Camper Cat 休息一下,并与朋友 Zersiax (@zersiax) 会面了。 Zersiax 是一位屏幕阅读器用户,同时也是无障碍设计的高手。 为了体验屏幕阅读器的朗读效果,请在 `p` 元素之后添加一个 `audio` 元素, 具有 `controls` 属性。 然后在 `audio` 标签里面放一个带有 `src` 属性的 `source` 标签,属性值为 `https://s3.amazonaws.com/freecodecamp/screen-reader.mp3`。将 `type` 属性设置为 `"audio/mpeg"`. +是时候让 Camper Cat 休息一下,并与朋友 Zersiax (@zersiax) 会面了。 Zersiax 是一位屏幕阅读器用户,同时也是无障碍设计的高手。 为了体验屏幕阅读器的朗读效果,请在 `p` 元素之后添加一个 `audio` 元素, 具有 `controls` 属性。 Then place a `source` element inside the `audio` tags with the `src` attribute set to `https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3` and `type` attribute set to `"audio/mpeg"`. **注意:** 音频片段的播放速度可能会快到令我们难以理解,但是对于屏幕阅读器用户来说这是正常速度。 @@ -70,7 +70,7 @@ assert($('audio').children('source').length === 1); ```js assert( $('source').attr('src') === - 'https://s3.amazonaws.com/freecodecamp/screen-reader.mp3' + 'https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3' ); ``` @@ -108,7 +108,7 @@ assert($('source').attr('type') === 'audio/mpeg');

A sound clip of Zersiax's screen reader in action.

diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md index 9dae457efbb..092e7071dab 100644 --- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md +++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md @@ -93,7 +93,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -186,7 +186,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md index 21ddb0e79a5..89d66e5e517 100644 --- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md +++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md @@ -102,7 +102,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -198,7 +198,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md index 9d82414f859..e0bb200e2ea 100644 --- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md +++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md @@ -95,7 +95,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -190,7 +190,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md index 48a8f52c253..b5e4974e4e2 100644 --- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md +++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md @@ -98,7 +98,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -192,7 +192,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md new file mode 100644 index 00000000000..47a2bcd6988 --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md @@ -0,0 +1,887 @@ +--- +id: 5e44413e903586ffb414c94e +title: Build a Budget App Project +challengeType: 23 +forumTopicId: 462361 +dashedName: build-a-budget-app-project +--- + +# --description-- + +Complete the `Category` class. It should be able to instantiate objects based on different budget categories like *food*, *clothing*, and *entertainment*. When objects are created, they are passed in the name of the category. The class should have an instance variable called `ledger` that is a list. The class should also contain the following methods: + +- A `deposit` method that accepts an amount and description. If no description is given, it should default to an empty string. The method should append an object to the ledger list in the form of `{"amount": amount, "description": description}`. +- A `withdraw` method that is similar to the `deposit` method, but the amount passed in should be stored in the ledger as a negative number. If there are not enough funds, nothing should be added to the ledger. This method should return `True` if the withdrawal took place, and `False` otherwise. +- A `get_balance` method that returns the current balance of the budget category based on the deposits and withdrawals that have occurred. +- A `transfer` method that accepts an amount and another budget category as arguments. The method should add a withdrawal with the amount and the description "Transfer to [Destination Budget Category]". The method should then add a deposit to the other budget category with the amount and the description "Transfer from [Source Budget Category]". If there are not enough funds, nothing should be added to either ledgers. This method should return `True` if the transfer took place, and `False` otherwise. +- A `check_funds` method that accepts an amount as an argument. It returns `False` if the amount is greater than the balance of the budget category and returns `True` otherwise. This method should be used by both the `withdraw` method and `transfer` method. + +When the budget object is printed it should display: + +- A title line of 30 characters where the name of the category is centered in a line of `*` characters. +- A list of the items in the ledger. Each line should show the description and amount. The first 23 characters of the description should be displayed, then the amount. The amount should be right aligned, contain two decimal places, and display a maximum of 7 characters. +- A line displaying the category total. + +Here is an example usage: + +```py +food = Category("Food") +food.deposit(1000, "deposit") +food.withdraw(10.15, "groceries") +food.withdraw(15.89, "restaurant and more food for dessert") +clothing = Category("Clothing") +food.transfer(50, clothing) +print(food) +``` + +And here is an example of the output: + +```bash +*************Food************* +initial deposit 1000.00 +groceries -10.15 +restaurant and more foo -15.89 +Transfer to Clothing -50.00 +Total: 923.96 +``` + +Besides the `Category` class, create a function (outside of the class) called `create_spend_chart` that takes a list of categories as an argument. It should return a string that is a bar chart. + +The chart should show the percentage spent in each category passed in to the function. The percentage spent should be calculated only with withdrawals and not with deposits. Down the left side of the chart should be labels 0 - 100. The "bars" in the bar chart should be made out of the "o" character. The height of each bar should be rounded down to the nearest 10. The horizontal line below the bars should go two spaces past the final bar. Each category name should be written vertically below the bar. There should be a title at the top that says "Percentage spent by category". + +This function will be tested with up to four categories. + +Look at the example output below very closely and make sure the spacing of the output matches the example exactly. + +```bash +Percentage spent by category +100| + 90| + 80| + 70| + 60| o + 50| o + 40| o + 30| o + 20| o o + 10| o o o + 0| o o o + ---------- + F C A + o l u + o o t + d t o + h + i + n + g +``` + +# --hints-- + +The `deposit` method should create a specific object in the ledger instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit(self): + self.food.deposit(900, "deposit") + actual = self.food.ledger[0] + expected = {"amount": 900, "description": "deposit"} + self.assertEqual(actual, expected, 'Expected "deposit" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `deposit` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit_no_description(self): + self.food.deposit(45.56) + actual = self.food.ledger[0] + expected = {"amount": 45.56, "description": ""} + self.assertEqual(actual, expected, 'Expected calling "deposit" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should create a specific object in the `ledger` instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": "milk, cereal, eggs, bacon, bread"} + self.assertEqual(actual, expected, 'Expected "withdraw" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `withdraw` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": ""} + self.assertEqual(actual, expected, 'Expected "withdraw" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `True` if the withdrawal took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + self.assertEqual(good_withdraw, True, 'Expected "withdraw" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `food.deposit(900, "deposit")` and `food.withdraw(45.67, "milk, cereal, eggs, bacon, bread")` should return a balance of `854.33`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_get_balance(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.get_balance() + expected = 854.33 + self.assertEqual(actual, expected, 'Expected balance to be 854.33') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `transfer` method on a category object should create a specific ledger item in that category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.food.ledger[2] + expected = {"amount": -transfer_amount, "description": "Transfer to Entertainment"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `True` if the transfer took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + self.assertEqual(good_transfer, True, 'Expected "transfer" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `transfer` on a category object should reduce the balance in the category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + food_balance_before = self.food.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + food_balance_after = self.food.get_balance() + self.assertEqual(food_balance_before - food_balance_after, transfer_amount, 'Expected "transfer" method to reduce balance in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should increase the balance of the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + entertainment_balance_before = self.entertainment.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + entertainment_balance_after = self.entertainment.get_balance() + self.assertEqual(entertainment_balance_after - entertainment_balance_before, transfer_amount, 'Expected "transfer" method to increase balance in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should create a specific ledger item in the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.entertainment.ledger[0] + expected = {"amount": transfer_amount, "description": "Transfer from Food"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `False` if the amount passed to the method is greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(20) + expected = False + self.assertEqual(actual, expected, 'Expected "check_funds" method to be False') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `True` if the amount passed to the method is not greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(10) + expected = True + self.assertEqual(actual, expected, 'Expected "check_funds" method to be True') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `False` if the withdrawal didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_funds(self): + self.food.deposit(100, "deposit") + good_withdraw = self.food.withdraw(100.10) + self.assertEqual(good_withdraw, False, 'Expected "withdraw" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `False` if the transfer didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer_no_funds(self): + self.food.deposit(100, "deposit") + good_transfer = self.food.transfer(200, self.entertainment) + self.assertEqual(good_transfer, False, 'Expected "transfer" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Printing a `Category` instance should give a different string representation of the object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_to_string(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + self.food.transfer(20, self.entertainment) + actual = str(self.food) + expected = "*************Food*************\\ndeposit 900.00\\nmilk, cereal, eggs, bac -45.67\\nTransfer to Entertainme -20.00\\nTotal: 834.33" + self.assertEqual(actual, expected, 'Expected different string representation of object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +` + const out = runPython(testCode); + assert(out); + } +}) +``` + +`create_spend_chart` should print a different chart representation. Check that all spacing is exact. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + self.business = budget.Category("Business") + + def test_create_spend_chart(self): + self.food.deposit(900, "deposit") + self.entertainment.deposit(900, "deposit") + self.business.deposit(900, "deposit") + self.food.withdraw(105.55) + self.entertainment.withdraw(33.40) + self.business.withdraw(10.99) + actual = budget.create_spend_chart([self.business, self.food, self.entertainment]) + expected = "Percentage spent by category\\n100| \\n 90| \\n 80| \\n 70| o \\n 60| o \\n 50| o \\n 40| o \\n 30| o \\n 20| o o \\n 10| o o \\n 0| o o o \\n ----------\\n B F E \\n u o n \\n s o t \\n i d e \\n n r \\n e t \\n s a \\n s i \\n n \\n m \\n e \\n n \\n t " + self.assertEqual(actual, expected, 'Expected different chart representation. Check that all spacing is exact.') +`); + + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Category: + pass + +def create_spend_chart(categories): + pass +``` + +# --solutions-- + +```py +class Category: + + def __init__(self, name): + self.name = name + self.ledger = [] + self.balance = 0 + self.spent = 0 + + def __str__(self): + first_line = f'{self.name.center(30, "*")}\n' + lines = '' + total = f'Total: {format(self.balance, ".2f")}' + + for n in range(len(self.ledger)): + descr = self.ledger[n]["description"][:23] + am = format(float(self.ledger[n]["amount"]), ".2f")[:7] + lines = lines + f'{descr:<23}{am:>7}\n' + + return f'{first_line}{lines}{total}' + + def deposit(self, amount, description=''): + self.ledger.append({ + 'amount': float(amount), + 'description': description + }) + self.balance = self.balance + float(amount) + + def withdraw(self, amount, description=''): + if self.check_funds(amount): + self.ledger.append({ + 'amount': -float(amount), + 'description': description + }) + self.balance = self.balance - float(amount) + self.spent = self.spent + float(amount) + return True + else: + return False + + def get_balance(self): + return self.balance + + def transfer(self, amount, category): + if self.check_funds(amount): + # withdraw + self.ledger.append({ + 'amount': -float(amount), + 'description': f'Transfer to {category.name}' + }) + self.balance = self.balance - float(amount) + # deposit + category.deposit(amount, f'Transfer from {self.name}') + + return True + else: + return False + + def check_funds(self, amount): + if float(amount) > self.balance: + return False + else: + return True + + +def create_spend_chart(categories): + total_expenses = 0 + obj = {} + col1 = [] + str = [] + final_str = 'Percentage spent by category\n' + label_max_length = 0 + label_strings = [] + + for category in categories: + total_expenses = total_expenses + category.spent + obj[category.name] = {'expenses': category.spent} + obj[category.name]['label'] = list(category.name) + if len(obj[category.name]['label']) > label_max_length: + label_max_length = len(obj[category.name]['label']) + + for category in categories: + obj[category.name]['percent'] = ( + (category.spent / total_expenses * 100) // 10) * 10 + obj[category.name]['column'] = [] + for i in range(0, 110, 10): + if obj[category.name]['percent'] >= i: + obj[category.name]['column'].insert(0, 'o') + else: + obj[category.name]['column'].insert(0, ' ') + + for i in range(0, 110, 10): + col1.insert(0, i) + + for i in range(11): + str.append("") + for key in obj: + str[i] += (f'{obj[key]["column"][i]} ') + final_str += f'{col1[i]:>3}| {str[i]}\n' + final_str += f' {"-"*(1+3*len(obj))}\n ' + + for i in range(label_max_length): + label_strings.append(' ') + for k in obj: + if len(obj[k]['label']) < label_max_length: + obj[k]['label'].extend( + f'{" "*(label_max_length-len(obj[k]["label"]))}') + + label_strings[i] += f'{obj[k]["label"][i]} ' + if i < label_max_length - 1: + label_strings[i] += '\n ' + final_str += label_strings[i] + + print(final_str) + return (final_str) + +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md new file mode 100644 index 00000000000..ef719adc3a7 --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md @@ -0,0 +1,869 @@ +--- +id: 5e444147903586ffb414c94f +title: Build a Polygon Area Calculator Project +challengeType: 23 +forumTopicId: 462363 +dashedName: build-a-polygon-area-calculator-project +--- + +# --description-- + +In this project you will use object oriented programming to create a `Rectangle` class and a `Square` class. The `Square` class should be a subclass of `Rectangle`, and inherit its methods and attributes. + +## Rectangle class + +When a Rectangle object is created, it should be initialized with `width` and `height` attributes. The class should also contain the following methods: + +- `set_width` +- `set_height` +- `get_area`: Returns area (`width * height`) +- `get_perimeter`: Returns perimeter (`2 * width + 2 * height`) +- `get_diagonal`: Returns diagonal (`(width ** 2 + height ** 2) ** .5`) +- `get_picture`: Returns a string that represents the shape using lines of "\*". The number of lines should be equal to the height and the number of "\*" in each line should be equal to the width. There should be a new line (`\n`) at the end of each line. If the width or height is larger than 50, this should return the string: "Too big for picture.". +- `get_amount_inside`: Takes another shape (square or rectangle) as an argument. Returns the number of times the passed in shape could fit inside the shape (with no rotations). For instance, a rectangle with a width of 4 and a height of 8 could fit in two squares with sides of 4. + +Additionally, if an instance of a `Rectangle` is represented as a string, it should look like: `Rectangle(width=5, height=10)` + +## Square class + +The `Square` class should be a subclass of `Rectangle`. When a `Square` object is created, a single side length is passed in. The `__init__` method should store the side length in both the `width` and `height` attributes from the `Rectangle` class. + +The `Square` class should be able to access the `Rectangle` class methods but should also contain a `set_side` method. If an instance of a `Square` is represented as a string, it should look like: `Square(side=9)` + +Additionally, the `set_width` and `set_height` methods on the `Square` class should set both the width and height. + +## Usage example + +```py +rect = Rectangle(10, 5) +print(rect.get_area()) +rect.set_height(3) +print(rect.get_perimeter()) +print(rect) +print(rect.get_picture()) + +sq = Square(9) +print(sq.get_area()) +sq.set_side(4) +print(sq.get_diagonal()) +print(sq) +print(sq.get_picture()) + +rect.set_height(8) +rect.set_width(16) +print(rect.get_amount_inside(sq)) +``` + +That code should return: + +```bash +50 +26 +Rectangle(width=10, height=3) +********** +********** +********** + +81 +5.656854249492381 +Square(side=4) +**** +**** +**** +**** + +8 +``` + +# --hints-- + +The `Square` class should be a subclass of the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_subclass(self): + actual = issubclass(shape_calculator.Square, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a subclass of the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `Square` class should be a distinct class from the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_distinct_classes(self): + actual = shape_calculator.Square is not shape_calculator.Rectangle + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a distinct class from the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +A square object should be an instance of the `Square` class and the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_is_square_and_rectangle(self): + actual = isinstance(self.sq, shape_calculator.Square) and isinstance(self.sq, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected square object to be an instance of the Square class and the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Rectangle(3, 6)` should be `Rectangle(width=3, height=6)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_string(self): + actual = str(self.rect) + expected = "Rectangle(width=3, height=6)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle to be "Rectangle(width=3, height=6)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Square(5)` should be `Square(side=5)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_string(self): + actual = str(self.sq) + expected = "Square(side=5)" + self.assertEqual(actual, expected, 'Expected string representation of square to be "Square(side=5)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_area()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_area(self): + actual = self.rect.get_area() + expected = 18 + self.assertEqual(actual, expected, 'Expected area of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_area()` should return `25`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_area(self): + actual = self.sq.get_area() + expected = 25 + self.assertEqual(actual, expected, 'Expected area of square to be 25') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_perimeter()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_perimeter(self): + actual = self.rect.get_perimeter() + expected = 18 + self.assertEqual(actual, expected, 'Expected perimeter of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_perimeter()` should return `20`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_perimeter(self): + actual = self.sq.get_perimeter() + expected = 20 + self.assertEqual(actual, expected, 'Expected perimeter of square to be 20') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_diagonal()` should return `6.708203932499369`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_diagonal(self): + actual = self.rect.get_diagonal() + expected = 6.708203932499369 + self.assertEqual(actual, expected, 'Expected diagonal of rectangle to be 6.708203932499369') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_diagonal()` should return `7.0710678118654755`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_diagonal(self): + actual = self.sq.get_diagonal() + expected = 7.0710678118654755 + self.assertEqual(actual, expected, 'Expected diagonal of square to be 7.0710678118654755') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Rectangle` class should have a different string representation after setting new values. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_set_attributes(self): + self.rect.set_width(7) + self.rect.set_height(8) + actual = str(self.rect) + expected = "Rectangle(width=7, height=8)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle after setting new values to be "Rectangle(width=7, height=8)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_side()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_side(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_width()` or `set_height()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_height(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') + self.sq.set_width(4) + actual = str(self.sq) + expected = "Square(side=4)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting width to be "Square(side=4)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Rectangle` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_picture(self): + self.rect.set_width(7) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "*******\\n*******\\n*******\\n" + self.assertEqual(actual, expected, 'Expected rectangle picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Square` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_picture(self): + self.sq.set_side(2) + actual = self.sq.get_picture() + expected = "**\\n**\\n" + self.assertEqual(actual, expected, 'Expected square picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return the string `Too big for picture.` if the `width` or `height` attributes are larger than `50`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_big_picture(self): + self.rect.set_width(51) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "Too big for picture." + self.assertEqual(actual, expected, 'Expected message: "Too big for picture."') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(15,10).get_amount_inside(Square(5))` should return `6`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + self.sq = shape_calculator.Square(5) + + def test_get_amount_inside(self): + self.rect.set_height(10) + self.rect.set_width(15) + actual = self.rect.get_amount_inside(self.sq) + expected = 6 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 6.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(4,8).get_amount_inside(Rectangle(3, 6))` should return `1`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_two_rectangles(self): + rect2 = shape_calculator.Rectangle(4, 8) + actual = rect2.get_amount_inside(self.rect) + expected = 1 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 1.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(2,3).get_amount_inside(Rectangle(3, 6))` should return `0`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_none(self): + rect2 = shape_calculator.Rectangle(2, 3) + actual = rect2.get_amount_inside(self.rect) + expected = 0 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 0.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Rectangle: + pass + +class Square: + pass +``` + +# --solutions-- + +```py +class Rectangle: + def __init__(self, width, height): + self.width = width + self.height = height + + def __str__(self): + return f'Rectangle(width={self.width}, height={self.height})' + + def set_width(self, width): + self.width = width + + def set_height(self, height): + self.height = height + + def get_area(self): + area = self.width * self.height + return area + + def get_perimeter(self): + perimeter = self.width * 2 + self.height * 2 + return perimeter + + def get_diagonal(self): + diagonal = (self.width ** 2 + self.height ** 2) ** 0.5 + return diagonal + + def get_picture(self): + if self.width < 50 and self.height < 50: + picture = f'{"*"*self.width}\n'*self.height + return picture + else: + return 'Too big for picture.' + + def get_amount_inside(self, polygon): + h_number = self.height // polygon.height + w_number = self.width // polygon.width + repetition = h_number * w_number + return repetition + + +class Square(Rectangle): + def __init__(self, side): + self.width = side + self.height = side + + def __str__(self): + return f'Square(side={self.width})' + + def set_width(self, side): + self.width = side + self.height = side + + def set_height(self, side): + self.height = side + self.width = side + + def set_side(self,side): + self.width = side + self.height = side + +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md new file mode 100644 index 00000000000..94cf5c682de --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md @@ -0,0 +1,300 @@ +--- +id: 5e44414f903586ffb414c950 +title: Build a Probability Calculator Project +challengeType: 23 +forumTopicId: 462364 +dashedName: build-a-probability-calculator-project +--- + +# --description-- + +Suppose there is a hat containing 5 blue balls, 4 red balls, and 2 green balls. What is the probability that a random draw of 4 balls will contain at least 1 red ball and 2 green balls? While it would be possible to calculate the probability using advanced mathematics, an easier way is to write a program to perform a large number of experiments to estimate an approximate probability. + +For this project, you will write a program to determine the approximate probability of drawing certain balls randomly from a hat. + +First, create a `Hat` class in `main.py`. The class should take a variable number of arguments that specify the number of balls of each color that are in the hat. For example, a class object could be created in any of these ways: + +```py +hat1 = Hat(yellow=3, blue=2, green=6) +hat2 = Hat(red=5, orange=4) +hat3 = Hat(red=5, orange=4, black=1, blue=0, pink=2, striped=9) +``` + +A hat will always be created with at least one ball. The arguments passed into the hat object upon creation should be converted to a `contents` instance variable. `contents` should be a list of strings containing one item for each ball in the hat. Each item in the list should be a color name representing a single ball of that color. For example, if your hat is `{"red": 2, "blue": 1}`, `contents` should be `["red", "red", "blue"]`. + +The `Hat` class should have a `draw` method that accepts an argument indicating the number of balls to draw from the hat. This method should remove balls at random from `contents` and return those balls as a list of strings. The balls should not go back into the hat during the draw, similar to an urn experiment without replacement. If the number of balls to draw exceeds the available quantity, return all the balls. + +Next, create an `experiment` function in `main.py` (not inside the `Hat` class). This function should accept the following arguments: + +- `hat`: A hat object containing balls that should be copied inside the function. +- `expected_balls`: An object indicating the exact group of balls to attempt to draw from the hat for the experiment. For example, to determine the probability of drawing 2 blue balls and 1 red ball from the hat, set `expected_balls` to `{"blue":2, "red":1}`. +- `num_balls_drawn`: The number of balls to draw out of the hat in each experiment. +- `num_experiments`: The number of experiments to perform. (The more experiments performed, the more accurate the approximate probability will be.) + +The `experiment` function should return a probability. + +For example, if you want to determine the probability of getting at least two red balls and one green ball when you draw five balls from a hat containing six black, four red, and three green. To do this, you will perform `N` experiments, count how many times `M` you get at least two red balls and one green ball, and estimate the probability as `M/N`. Each experiment consists of starting with a hat containing the specified balls, drawing several balls, and checking if you got the balls you were attempting to draw. + +Here is how you would call the `experiment` function based on the example above with 2000 experiments: + +```py +hat = Hat(black=6, red=4, green=3) +probability = experiment(hat=hat, + expected_balls={"red":2,"green":1}, + num_balls_drawn=5, + num_experiments=2000) +``` + +The output would be something like this: + +```bash +0.356 +``` + +Since this is based on random draws, the probability will be slightly different each time the code is run. + +_Hint: Consider using the modules that are already imported at the top. Do not initialize random seed within the file._ + + +# --hints-- + +Creation of `hat` object should add correct contents. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_class_contents(self): + hat = probability_calculator.Hat(red=3,blue=2) + actual = hat.contents + expected = ["red","red","red","blue","blue"] + self.assertEqual(actual, expected, 'Expected creation of hat object to add correct contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method in `hat` class should reduce number of items in contents. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw(self): + hat = probability_calculator.Hat(red=5,blue=2) + actual = hat.draw(2) + expected = ['blue', 'red'] + self.assertEqual(actual, expected, 'Expected hat draw to return two random items from hat contents.') + actual = len(hat.contents) + expected = 5 + self.assertEqual(actual, expected, 'Expected hat draw to reduce number of items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method should behave correctly when the number of balls to extract is bigger than the number of balls in the hat. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw_2(self): + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + actual = hat.draw(20) + expected = ['yellow', 'yellow', 'yellow', 'yellow', 'yellow', 'red', 'green', 'green', 'green', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'test'] + self.assertEqual(actual, expected, 'Expected hat draw to return all items from hat contents.') + actual = len(hat.contents) + expected = 0 + self.assertEqual(actual, expected, 'Expected hat draw to leave no items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `experiment` method should return a different probability. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_prob_experiment(self): + hat = probability_calculator.Hat(blue=3,red=2,green=6) + probability = probability_calculator.experiment(hat=hat, expected_balls={"blue":2,"green":1}, num_balls_drawn=4, num_experiments=1000) + actual = probability + expected = 0.272 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + probability = probability_calculator.experiment(hat=hat, expected_balls={"yellow":2,"blue":3,"test":1}, num_balls_drawn=20, num_experiments=100) + actual = probability + expected = 1.0 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +# --seed-- + +## --seed-contents-- + +```py +import copy +import random + +class Hat: + pass + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + pass +``` + +# --solutions-- + +```py +import copy +import random + +class Hat: + def __init__(self, **hat): + self.hat = hat + contents = [] + for i in hat: + for j in range(hat[i]): + contents.append(i) + self.contents = contents + + + def draw(self, number): + drawn = [] + if number >= len(self.contents): + drawn.extend(self.contents) + self.contents = [] + else: + for i in range(number): + drawn.append( + self.contents.pop(random.randrange(len(self.contents))) + ) + return drawn + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + expected_balls_list = [] + drawn_list = [] + success = 0 + for i in expected_balls: + for j in range(expected_balls[i]): + expected_balls_list.append(i) + for j in range(num_experiments): + hat_copy = copy.deepcopy(hat) + drawn_list.append(hat_copy.draw(num_balls_drawn)) + exp_ball_list_copy = expected_balls_list[:] + for k in range(len(drawn_list[j])): + try: + ind = exp_ball_list_copy.index(drawn_list[j][k]) + exp_ball_list_copy.pop(ind) + except: + continue + if len(exp_ball_list_copy) == 0: + success += 1 + probability = success/num_experiments + return probability +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md new file mode 100644 index 00000000000..05e60f0b74a --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md @@ -0,0 +1,582 @@ +--- +id: 5e444136903586ffb414c94d +title: Build a Time Calculator Project +challengeType: 23 +forumTopicId: 462360 +dashedName: build-a-time-calculator-project +--- + +# --description-- + +Write a function named `add_time` that takes in two required parameters and one optional parameter: + +- a start time in the 12-hour clock format (ending in AM or PM) +- a duration time that indicates the number of hours and minutes +- (optional) a starting day of the week, case insensitive + +The function should add the duration time to the start time and return the result. + +If the result will be the next day, it should show `(next day)` after the time. If the result will be more than one day later, it should show `(n days later)` after the time, where "n" is the number of days later. + +If the function is given the optional starting day of the week parameter, then the output should display the day of the week of the result. The day of the week in the output should appear after the time and before the number of days later. + +Below are some examples of different cases the function should handle. Pay close attention to the spacing and punctuation of the results. + +```py +add_time('3:00 PM', '3:10') +# Returns: 6:10 PM + +add_time('11:30 AM', '2:32', 'Monday') +# Returns: 2:02 PM, Monday + +add_time('11:43 AM', '00:20') +# Returns: 12:03 PM + +add_time('10:10 PM', '3:30') +# Returns: 1:40 AM (next day) + +add_time('11:43 PM', '24:20', 'tueSday') +# Returns: 12:03 AM, Thursday (2 days later) + +add_time('6:30 PM', '205:12') +# Returns: 7:42 AM (9 days later) +``` + +Do not import any Python libraries. Assume that the start times are valid times. The minutes in the duration time will be a whole number less than 60, but the hour can be any whole number. + +# --hints-- +Calling `add_time('3:30 PM', '2:12')` should return `'5:42 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +import time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period(self): + actual = time_calculator.add_time("3:30 PM", "2:12") + expected = "5:42 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12" to return "5:42 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:55 AM', '3:12')` should return `'3:07 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_different_period(self): + actual = time_calculator.add_time("11:55 AM", "3:12") + expected = "3:07 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:55 AM", "3:12" to return "3:07 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected time to end with `'(next day)'` when it is the next day. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_next_day(self): + actual = time_calculator.add_time("9:15 PM", "5:30") + expected = "2:45 AM (next day)" + self.assertEqual(actual, expected, 'Expected time to end with "(next day)" when it is the next day.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected period to change from `AM` to `PM` at `12:00`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_period_change_at_twelve(self): + actual = time_calculator.add_time("11:40 AM", "0:25") + expected = "12:05 PM" + self.assertEqual(actual, expected, 'Expected period to change from AM to PM at 12:00') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00')` should return `'2:59 AM (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four(self): + actual = time_calculator.add_time("2:59 AM", "24:00") + expected = "2:59 AM (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00" to return "2:59 AM (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05')` should return `'12:04 AM (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later(self): + actual = time_calculator.add_time("11:59 PM", "24:05") + expected = "12:04 AM (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05" to return "12:04 AM (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02')` should return `'6:18 AM (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration(self): + actual = time_calculator.add_time("8:16 PM", "466:02") + expected = "6:18 AM (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02" to return "6:18 AM (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected adding `0:00` to return the initial time. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_no_change(self): + actual = time_calculator.add_time("5:01 AM", "0:00") + expected = "5:01 AM" + self.assertEqual(actual, expected, 'Expected adding 0:00 to return initial time.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('3:30 PM', '2:12', 'Monday')`should return `'5:42 PM, Monday'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period_with_day(self): + actual = time_calculator.add_time("3:30 PM", "2:12", "Monday") + expected = "5:42 PM, Monday" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12", "Monday" to return "5:42 PM, Monday"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00', 'saturDay')` should return `'2:59 AM, Sunday (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four_with_day(self): + actual = time_calculator.add_time("2:59 AM", "24:00", "saturDay") + expected = "2:59 AM, Sunday (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00", "saturDay" to return "2:59 AM, Sunday (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05', 'Wednesday')` should return `'12:04 AM, Friday (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later_with_day(self): + actual = time_calculator.add_time("11:59 PM", "24:05", "Wednesday") + expected = "12:04 AM, Friday (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05", "Wednesday" to return "12:04 AM, Friday (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02', 'tuesday')`should return `'6:18 AM, Monday (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration_with_day(self): + actual = time_calculator.add_time("8:16 PM", "466:02", "tuesday") + expected = "6:18 AM, Monday (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02", "tuesday" to return "6:18 AM, Monday (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def add_time(start, duration): + + + + + + return new_time +``` + +# --solutions-- + +```py +def add_time(start, duration, day=''): + start_arr = start[0:-3].split(':') + dur_arr = duration.split(':') + tail = '' + # converting to 24h format + if 'AM' in start: + if start_arr[0] == '12': + start_arr[0] = '00' + elif 'PM' in start: + if start_arr[0] == '12': + start_arr[0] = '12' + else: + start_arr[0] = f'{int(start_arr[0]) + 12}' + + # adding minutes + sum_m = int(start_arr[1]) + int(dur_arr[1]) + if sum_m > 59: + + if (sum_m - 60 * (sum_m//60)) < 10: + mins = f'0{(sum_m - 60 * (sum_m//60))}' + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + + else: + mins = sum_m - 60 * (sum_m//60) + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + else: + if sum_m < 10: + mins = f'0{sum_m}' + else: + mins = sum_m + + #adding hours + sum_h = int(start_arr[0]) + int(dur_arr[0]) + if sum_h < 24: + hours= sum_h + #time_24 = f'{hours}:{mins}' + else: + days_after = sum_h//24 + if days_after == 1: + hours = sum_h - 24 + tail = ' (next day)' + else: + hours = sum_h - 24 * days_after + tail = f' ({days_after} days later)' + + #converting back to AM/PM + if hours == 0: + hours = 12 + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + elif hours < 12: + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + else: + if hours > 12: + hours = hours - 12 + time = f'{hours}:{mins} PM' + final_time = f'{time}{tail}' + + #days of the week + week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] + if day: + day = day.capitalize() + if not tail: + final_time = f'{time}, {day}' + elif tail == ' (next day)': + index = week.index(day) + 1 + if index == 7: + index = 0 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + elif tail: + index = (week.index(day) + days_after) % 7 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + + + print('\n') + print(final_time) + print('\n') + return final_time + +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md new file mode 100644 index 00000000000..4f112fd73c5 --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md @@ -0,0 +1,248 @@ +--- +id: 5e44412c903586ffb414c94c +title: Build an Arithmetic Formatter Project +challengeType: 23 +forumTopicId: 462359 +dashedName: build-an-arithmetic-formatter-project +--- + +# --description-- + +Students in primary school often arrange arithmetic problems vertically to make them easier to solve. For example, "235 + 52" becomes: + +```py + 235 ++ 52 +----- +``` + +Finish the `arithmetic_arranger` function that receives a list of strings which are arithmetic problems, and returns the problems arranged vertically and side-by-side. The function should optionally take a second argument. When the second argument is set to `True`, the answers should be displayed. + +## Example + +Function Call: + +```py +arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"]) +``` + +Output: + +```py + 32 3801 45 123 ++ 698 - 2 + 43 + 49 +----- ------ ---- ----- +``` + +Function Call: + +```py +arithmetic_arranger(["32 + 8", "1 - 3801", "9999 + 9999", "523 - 49"], True) +``` + +Output: + +```py + 32 1 9999 523 ++ 8 - 3801 + 9999 - 49 +---- ------ ------ ----- + 40 -3800 19998 474 +``` + +## Rules + +The function will return the correct conversion if the supplied problems are properly formatted, otherwise, it will **return** a **string** that describes an error that is meaningful to the user. + +- Situations that will return an error: + - If there are **too many problems** supplied to the function. The limit is **five**, anything more will return: `'Error: Too many problems.'` + - The appropriate operators the function will accept are **addition** and **subtraction**. Multiplication and division will return an error. Other operators not mentioned in this bullet point will not need to be tested. The error returned will be: `"Error: Operator must be '+' or '-'."` + - Each number (operand) should only contain digits. Otherwise, the function will return: `'Error: Numbers must only contain digits.'` + - Each operand (aka number on each side of the operator) has a max of four digits in width. Otherwise, the error string returned will be: `'Error: Numbers cannot be more than four digits.'` +- If the user supplied the correct format of problems, the conversion you return will follow these rules: + - There should be a single space between the operator and the longest of the two operands, the operator will be on the same line as the second operand, both operands will be in the same order as provided (the first will be the top one and the second will be the bottom). + - Numbers should be right-aligned. + - There should be four spaces between each problem. + - There should be dashes at the bottom of each problem. The dashes should run along the entire length of each problem individually. (The example above shows what this should look like.) + +# --hints-- + +`arithmetic_arranger(["3801 - 2", "123 + 49"])` should return `3801 123\n- 2 + 49\n------ -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3801 - 2", "123 + 49"]), ' 3801 123\\n- 2 + 49\\n------ -----')`); + } +}) +``` + +`arithmetic_arranger(["1 + 2", "1 - 9380"])` should return `1 1\n+ 2 - 9380\n--- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["1 + 2", "1 - 9380"]), ' 1 1\\n+ 2 - 9380\\n--- ------')`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `3 3801 45 123\n+ 855 - 2 + 43 + 49\n----- ------ ---- -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]), ' 3 3801 45 123\\n+ 855 - 2 + 43 + 49\\n----- ------ ---- -----')`); + } +}) +``` + +`arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"])` should return `11 3801 1 123 1\n+ 4 - 2999 + 2 + 49 - 9380\n---- ------ --- ----- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"]), ' 11 3801 1 123 1\\n+ 4 - 2999 + 2 + 49 - 9380\\n---- ------ --- ----- ------')`); + } +}) +``` + +`arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"])` should return `'Error: Too many problems.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"]), 'Error: Too many problems.')`); + } +}) +``` + +`arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `"Error: Operator must be '+' or '-'."`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Operator must be '+' or '-'.")`); + } +}) +``` + +`arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers cannot be more than four digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers cannot be more than four digits.")`); + } +}) +``` + +`arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers must only contain digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers must only contain digits.")`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "988 + 40"], True)` should return `3 988\n+ 855 + 40\n----- -----\n 858 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "988 + 40"], True), " 3 988\\n+ 855 + 40\\n----- -----\\n 858 1028")`); + } +}) +``` + +`arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True)` should return `32 1 45 123 988\n- 698 - 3801 + 43 + 49 + 40\n----- ------ ---- ----- -----\n -666 -3800 88 172 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True), " 32 1 45 123 988\\n- 698 - 3801 + 43 + 49 + 40\\n----- ------ ---- ----- -----\\n -666 -3800 88 172 1028")`); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def arithmetic_arranger(problems, show_answers=False): + + return problems + +print(f'\n{arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"])}') +``` + +# --solutions-- + +```py +def arithmetic_arranger(problems, result=False): + + lin1 = "" + lin2 = "" + lin3 = "" + lin4 = "" + + if len(problems) > 5: + return 'Error: Too many problems.' + for problem in problems: + [num1, sym, num2] = problem.split() + sign = ['+', '-'] + if sym not in sign: + return ("Error: Operator must be '+' or '-'.") + if len(num1) > 4 or len(num2) > 4: + return ("Error: Numbers cannot be more than four digits.") + if not num1.isnumeric() or not num2.isnumeric(): + return ("Error: Numbers must only contain digits.") + + lin1 += " " + num1 + " " if len(num1) >= len( + num2) else " " * (len(num2) + 2 - len(num1)) + num1 + " " + lin2 += sym + " " + num2 + " " if len(num2) >= len( + num1) else sym + " " * (len(num1) - len(num2) + 1) + num2 + " " + nmax = (len(num1) + 2) if len(num1) >= len(num2) else (len(num2) + 2) + lin3 += "-" * nmax + " " + op = int(num1) + int(num2) if sym == "+" else int(num1) - int(num2) + lin4 += (" " * (nmax - len(str(op)))) + str(op) + " " + + arranged_problems = lin1.rstrip() + "\n" + lin2.rstrip( + ) + "\n" + lin3.rstrip() + if result: + arranged_problems += "\n" + lin4.rstrip() + + return arranged_problems +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md index 0ff20430490..84497b9e00f 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md @@ -23,7 +23,7 @@ Add a new key-value pair to your dictionary. Use the string `species` as the key You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 1 `)) }) @@ -32,7 +32,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have a `species` key with the value `guinea pig` inside your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig"} `)) }) diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md index f73ef40e88a..ce69e929437 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md @@ -14,7 +14,7 @@ Now, replace the existent keys with the strings `A` and `B` — one for each nod Your dictionary should have an `A` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "A" in my_graph `)) }) @@ -23,7 +23,7 @@ Your dictionary should have an `A` key. Your `A` key should have `B` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -32,7 +32,7 @@ Your `A` key should have `B` as the value. Your dictionary should have an `B` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "B" in my_graph `)) }) @@ -41,7 +41,7 @@ Your dictionary should have an `B` key. Your `B` key should have `A` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["B"] == "A" `)) }) @@ -50,7 +50,7 @@ Your `B` key should have `A` as the value. Your dictionary should have two keys. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph) == 2 `)) }) diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md index 46f91b31bcf..b4c35de72bf 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md @@ -16,7 +16,7 @@ Modify your existing dictionary to represent this arrangement. Use a list to rep Your dictionary should have 3 keys — `A`, `B`, and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C"] len(my_graph) == 3 and all(key in my_graph for key in key_list) `)) @@ -26,7 +26,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["A"]` should have the `B` node as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -35,7 +35,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -44,7 +44,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. The value of `my_graph["B"]` should be a list containing the other two nodes. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -53,7 +53,7 @@ The value of `my_graph["B"]` should be a list containing the other two nodes. The value of `my_graph["C"]` should be the connected node. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["C"] == "B" `)) }) diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md index 9f90b08d36e..25e45427669 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md @@ -14,7 +14,7 @@ Add one last node, `D`, which is connected with `A` and `C`. Modify your diction Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -24,7 +24,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list `)) }) @@ -33,7 +33,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["A"]) == 2 and "B" in my_graph["A"] and "D" in my_graph["A"] `)) }) @@ -42,7 +42,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -51,7 +51,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -60,7 +60,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list `)) }) @@ -69,7 +69,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["C"]) == 2 and "B" in my_graph["C"] and "D" in my_graph["C"] `)) }) @@ -78,7 +78,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list `)) }) @@ -87,7 +87,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["D"]) == 2 and "A" in my_graph["D"] and "C" in my_graph["D"] `)) }) diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md index a0833d4af2d..9c8315b0f30 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md @@ -27,7 +27,7 @@ Modify `my_graph["A"]` into a list of tuples, considering the following distance Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -37,7 +37,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list and all(type(i) is tuple for i in my_graph["A"]) `)) }) @@ -46,7 +46,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 3), ("D", 1)] len(my_graph["A"]) == 2 and all(t in my_graph["A"] for t in tuples) `)) diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md index 83c6b95486c..528f5eb45b7 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md @@ -16,7 +16,7 @@ Declare an empty function called `shortest_path` and don't forget the `pass` key You should have a `shortest_path` function. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect inspect.isfunction(shortest_path) `)) diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md index 158530bac82..f8fe11a2f60 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md @@ -16,7 +16,7 @@ For that your function needs two parameters: `graph`, and `start`. Add them to y Your function should accept `graph` and `start` as the parameters, in this order. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == '(graph, start)' diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md index 183c3de3c38..4a2abfe140c 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md @@ -22,7 +22,7 @@ Your function should take three parameters:`graph`, `start`, and `target`. The o The `target` parameter should have the default value of an empty string. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == "(graph, start, target='')" diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md index 57892696706..ad8efc85b1d 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md @@ -14,7 +14,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list and all(type(i) is tuple for i in my_graph["B"]) `)) }) @@ -23,7 +23,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 3), ("C", 4)] len(my_graph["B"]) == 2 and all(t in my_graph["B"] for t in tuples) `)) diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md index 47c592c584c..fa3b90b95ea 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md @@ -14,7 +14,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list and all(type(i) is tuple for i in my_graph["C"]) `)) }) @@ -23,7 +23,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 4), ("D", 7)] len(my_graph["C"]) == 2 and all(t in my_graph["C"] for t in tuples) `)) @@ -33,7 +33,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list and all(type(i) is tuple for i in my_graph["D"]) `)) }) @@ -42,7 +42,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 1), ("C", 7)] len(my_graph["D"]) == 2 and all(t in my_graph["D"] for t in tuples) `)) diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md index be0c65608bd..50f8a9a3381 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md @@ -25,7 +25,7 @@ Now, you are going to test your function with another graph. Change `my_graph` i You should modify `my_graph` into the provided graph. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` g = { 'A': [('B', 5), ('C', 3), ('E', 11)], 'B': [('A', 5), ('C', 1), ('F', 2)], diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md index 508ca6c36c2..b05ddee4239 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md @@ -27,7 +27,7 @@ You should have a variable called `copper`. Your `copper` variable should have the value of an empty dictionary. Use a pair of curly braces for that. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {} `)) }) diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md index 620a27175ea..6a0d15b2604 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md @@ -16,7 +16,7 @@ Add another key `age` to your dictionary and give it the integer number `2` as v You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 2 `)) }) @@ -25,7 +25,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have an `age` key with the value `2` just after `'species': 'guinea pig'`, inside your `copper` dictionary. Don't forget the comma. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md index 699754cab5b..7c3cec75c00 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md @@ -25,7 +25,7 @@ After your dictionary, follow the example above to access the `species` key of ` You should not modify your dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md index e4cd71d5b85..ccf6c87e326 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md @@ -24,7 +24,7 @@ You should rename your `copper` dictionary into `my_graph`. Your `my_graph` variable should be a dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph) is dict `)) }) diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md index 6cae2ea4879..d146eed4475 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md @@ -16,7 +16,7 @@ Your `merge_sort` function should take a single parameter: `array`. ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('merge_sort'))) == '(array)' + str(inspect.signature(merge_sort)) == '(array)' `)) }) ``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md index 913529c54de..dc6a6b68b96 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md @@ -19,13 +19,9 @@ You should create an `if` statement to check if `len(array) <= 1`. Don't forget ```js ({ - test: () => { - const transformedCode = code.replace(/\r/g, ""); - const merge_sort = __helpers.python.getDef("\n" + transformedCode, "merge_sort"); - const { function_body } = merge_sort; - - assert.match(function_body, /if\s+len\(\s*array\s*\)\s*<=\s*1:\s*pass/); - } + test: () => assert(runPython(` + _Node(_code).find_function("merge_sort").find_ifs()[0].find_conditions()[0].is_equivalent("len(array) <= 1") + `)) }) ``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md index 22265598c5f..bfec72fff97 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md @@ -22,13 +22,11 @@ Use the `pass` keyword in the body of the `if` statement. Your `if` statement should check if `__name__` has a value of `'__main__'` ```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:/); -``` - -You should have the `pass` keyword in the body of your `if` statement - -```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:\s*[^}]*\bpass\b/); +({ + test: () => assert(runPython(` + _Node(_code).find_ifs()[0].find_conditions()[0].is_equivalent("__name__ == '__main__'") + `)) +}) ``` # --seed-- diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md index 645b176093d..38f2d8fa9ba 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md @@ -25,7 +25,6 @@ Your `rods` variable should be an empty dictionary. ```js ({ test: () => assert(runPython(` - rods = __locals.get("rods") rods == {} `)) }) diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md index 26d6c966bd7..b2fad0cd53d 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md @@ -19,8 +19,7 @@ You should use the `range()` function to assign a sequence of numbers to `rods[' ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - type(a['A']) is range + type(rods['A']) is range `)) }) ``` @@ -29,8 +28,7 @@ You should use the `range()` function to assign the sequence of numbers from `3` ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == range(3, 0, -1) + rods['A'] == range(3, 0, -1) `)) }) ``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md index 5ff292d7c9e..4b0c4f6d59e 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md @@ -17,8 +17,7 @@ You should pass your `range()` call to the `list()` function. ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == list(range(3, 0, -1)) + rods['A'] == list(range(3, 0, -1)) `)) }) ``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md index 720de9220a2..f8ff4d5db46 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md @@ -23,7 +23,7 @@ You should declare an empty function named `move`. Remember to use the `pass` ke ({ test: () => { assert(runPython(` import inspect - inspect.isfunction(__locals.get('move')) + inspect.isfunction(move) `)) } }) diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md index 639364da7ca..171a02d0711 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md @@ -23,9 +23,8 @@ The value of `number_of_moves` should be the expression to calculate the number ```js ({ test: () => { - assert(runPython(` - a = __locals.get('NUMBER_OF_DISKS') - __locals.get('number_of_moves') == 2**a -1 + assert(runPython(` + number_of_moves == 2**NUMBER_OF_DISKS -1 `)) } }) ``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md index 450d911cc06..26fe2cedd89 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md @@ -16,7 +16,7 @@ You should declare an empty function named `make_allowed_move`. Remember to use ```js ({ test: () => assert(runPython(` import inspect - inspect.isfunction(__locals.get('make_allowed_move')) + inspect.isfunction(make_allowed_move) `)) }) ``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md index 7db0f049f08..935b1365a7c 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md @@ -16,7 +16,7 @@ Your `make_allowed_move()` function should have two parameters named `rod1` and ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('make_allowed_move'))) == '(rod1, rod2)' + str(inspect.signature(make_allowed_move)) == '(rod1, rod2)' `)) }) ``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md index a154d1b2435..d2aace274c3 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md @@ -14,16 +14,14 @@ The `rods` dictionary will represent the three rods with their disks. Give it th Your `rods` dictionary should have an `'A'` key. ```js -({ test: () => assert(runPython(`'A' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'A' in rods`)) }) ``` `rods['A']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['A'] == [] + rods['A'] == [] `)) }) ``` @@ -31,16 +29,14 @@ Your `rods` dictionary should have an `'A'` key. Your `rods` dictionary should have a `'B'` key. ```js -({ test: () => assert(runPython(`'B' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'B' in rods`)) }) ``` `rods['B']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['B'] == [] + rods['B'] == [] `)) }) ``` @@ -48,16 +44,14 @@ Your `rods` dictionary should have a `'B'` key. Your `rods` dictionary should have a `'C'` key. ```js -({ test: () => assert(runPython(`'C' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'C' in rods`)) }) ``` `rods['C']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['C'] == [] + rods['C'] == [] `)) }) ``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md index 61e5244277c..0bdc5c9c096 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md @@ -22,7 +22,7 @@ Your `move()` function should have `n`, `source`, `auxiliary`, and `target` as t ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('move'))) == '(n, source, auxiliary, target)' + str(inspect.signature(move)) == '(n, source, auxiliary, target)' `)) }) ``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md index 23c321e77ff..8b0b445d305 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md @@ -17,9 +17,8 @@ You should reduce the indentation level of all the code after the `return` state ```js ({ test: () => assert(runPython(` - hanoi = __locals.get("move") a, b, c = [3, 2, 1], [], [] - hanoi(3, a, b, c) + move(3, a, b, c) a == [] and b == [] and c == [3, 2, 1] `)) }) diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md index 16e7b5b68ed..00efcbb8726 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md @@ -23,9 +23,8 @@ You should add `direction` as the third parameter of your function. ```js ({ test: () => assert(runPython(` - import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + import inspect + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction)' `)) }) diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md index 74562ae26a5..d19dc6dbe27 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md @@ -24,8 +24,7 @@ You should declare a new function called `encrypt`. Remember to use the `pass` k ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - inspect.isfunction(f) + inspect.isfunction(encrypt) `)) }) ``` @@ -35,8 +34,7 @@ Your `encrypt` function should take `message` and `key` as the parameters. The o ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - sig = inspect.signature(f) + sig = inspect.signature(encrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md index fa091717efb..b7357c63760 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md @@ -16,8 +16,7 @@ You should define a new function called `decrypt`. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - inspect.isfunction(f) + inspect.isfunction(decrypt) `)) }) ``` @@ -27,8 +26,7 @@ Your `decrypt` function should take `message` and `key` as the parameters. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - sig = inspect.signature(f) + sig = inspect.signature(decrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md index 19fcb7ee6a3..f719d77790e 100644 --- a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md @@ -23,8 +23,7 @@ The `direction` parameter of your `vigenere` function should have a default valu ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction=1)' `)) }) diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md new file mode 100644 index 00000000000..733f024fa29 --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md @@ -0,0 +1,39 @@ +--- +id: 65ef181dad3d96b14a21a03e +title: Step 1 +challengeType: 20 +dashedName: step-1 +--- + +# --description-- + +In this project, you will find the approximate square root of a given number using the bisection method. + +The bisection method is a technique for finding the roots of a real-valued function. It works by narrowing down an interval where the square root lies until it converges to a value within a specified tolerance. + +Begin by creating a function named `square_root_bisection`. Leave the parameters empty for now. + +# --hints-- + +You should define the function `square_root_bisection` with no parameters. + +```js +({ + test: () => { + assert(runPython(` + import inspect + inspect.isfunction(square_root_bisection) + `)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md new file mode 100644 index 00000000000..f5091e5a2c6 --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md @@ -0,0 +1,38 @@ +--- +id: 65ef190c6b51e9b5a5f7ed29 +title: Step 2 +challengeType: 20 +dashedName: step-2 +--- + +# --description-- + +Give the `square_root_bisection` method the following parameters: + +- `square_target`: The number for which you want to find the square root. +- `tolerance` (optional): The acceptable difference between the square of the approximate root value and the actual target value (default is `1e-7`). The tolerance `1e-7` implies that the solution will be accurate to within `0.0000001` of the true value and is a good default choice that balances accuracy and performance. +- `max_iterations` (optional): The maximum number of iterations to perform (default is `100`). If the method doesn't converge within this limit, you'll assume the solution is not found. + +# --hints-- + +Your function should have these parameters: `square_target`, `tolerance = 1e-7`, and `max_iterations = 100`. The order matters. + +```js +({ + test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").has_args("square_target, tolerance=1e-7, max_iterations=100")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py + +--fcc-editable-region-- +def square_root_bisection(): + pass +--fcc-editable-region-- + +``` + diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md new file mode 100644 index 00000000000..77628582774 --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md @@ -0,0 +1,46 @@ +--- +id: 65ef19425d1b27b6c930bae6 +title: Step 3 +challengeType: 20 +dashedName: step-3 +--- + +# --description-- + +If the number for which you want to find the square root is negative, the code should raise an error as the square root of a negative number is not defined in real numbers. + +Remove the `pass` statement and create an `if` statement to check if `square_target` is less than `0`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").has_pass()`)) + } +}) +``` + +You should create an `if` statement to check if `square_target < 0`. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_if("square_target < 0").is_empty()`)) + + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance = 1e-7, max_iterations = 100): + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md new file mode 100644 index 00000000000..20f407dfd2a --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md @@ -0,0 +1,46 @@ +--- +id: 65ef198fde24dfb7ff675b42 +title: Step 4 +challengeType: 20 +dashedName: step-4 +--- + +# --description-- + +If the `square_target` is less than `0`, raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'`. Don't forget to remove the `pass` keyword. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'` inside the `if` body. + +```js +({ + test: () => { + + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].is_equivalent("raise ValueError('Square root of negative number is not defined in real numbers')")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md new file mode 100644 index 00000000000..f31f83a0ed3 --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md @@ -0,0 +1,38 @@ +--- +id: 65ef19ec318e2fb9066381e3 +title: Step 5 +challengeType: 20 +dashedName: step-5 +--- + +# --description-- + +You'll create separate cases for when `square_target` is `0` or `1`. + +Begin by creating an `if` statement to check if `square_target` is equal to `1`. + +# --hints-- + +You should create an `if` statement to check that `square_target == 1`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[0].is_equivalent("square_target == 1")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md new file mode 100644 index 00000000000..927a215705a --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md @@ -0,0 +1,51 @@ +--- +id: 65ef1a1fcb527bba0ca82ccf +title: Step 6 +challengeType: 20 +dashedName: step-6 +--- + +# --description-- + +If the `square_target` is equal to `1`, declare a variable `root` and assign it the value `1` . Also, print the message `'The square root of {square_target} is 1'`. Remember to format the message using an f-string. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should assign the value `1` to the `root` variable and print the message `'The square root of {square_target} is 1'` inside the `if` body. + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].is_equivalent("root = 1\\nprint(f'The square root of {square_target} is 1')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md new file mode 100644 index 00000000000..9ba5f5b573f --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md @@ -0,0 +1,55 @@ +--- +id: 65ef1a50049cf9bada13266f +title: Step 7 +challengeType: 20 +dashedName: step-7 +--- + +# --description-- + +Create an `elif` statement to check if `square_target` is equal to `0`. If it is, assign the value `0` to the `root` variable. Also, print the message `'The square root of {square_target} is 0'`. Remember to format the message using an f-string. + +# --hints-- + +You should have an `elif` statement to check the condition `square_target == 0`. + + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[1].is_equivalent("square_target == 0")`)); + } +}) + +``` + +You should assign the value `0` to the `root` variable and pass the argument `f'The square root of {square_target} is 0'` to a `print` call. + + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[1].is_equivalent("root = 0\\nprint(f'The square root of {square_target} is 0')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md new file mode 100644 index 00000000000..0fb10817783 --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md @@ -0,0 +1,45 @@ +--- +id: 65ef1a720d6e65bbb0d22463 +title: Step 8 +challengeType: 20 +dashedName: step-8 +--- + +# --description-- +Next, you are going to work on the cases where the `square_target` is a positive number apart from `1` or `0`. + +Create an `else` clause to handle these cases. + +# --hints-- + +Create an `else` clause and do not forget to add a `pass` keyword. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[2] == _Node()`)) + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md new file mode 100644 index 00000000000..8f10c9990f1 --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md @@ -0,0 +1,73 @@ +--- +id: 65ef1aacca094bbcc2e2a3c8 +title: Step 9 +challengeType: 20 +dashedName: step-9 +--- + +# --description-- + +In Python, the `max()` function returns the largest of the input values. + +```python +max(1, 2, 3) # Output: 3 +``` + +The variables `low` and `high` will be used to define the initial interval where the square root lies. + +Inside the `else` clause, initialize the `low` variable to `0` and the `high` variable to be the maximum of either `1` or `square_target` as the square root of a number is always less than or equal to the number itself. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].has_pass()`)) + } +}) +``` + +You should declare a variable `low` and assign it `0`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("low").is_equivalent("low = 0")`)); } +}) + +``` + +You should declare a variable `high` and use the `max()` function to assign it the maximum value between `1` and `square_target`. + +```js + +({ test: () => assert(runPython(` +node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("high") +values = ["high = max(1, square_target)", "high = max(square_target, 1)"] +any(node.is_equivalent(val) for val in values) +`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md new file mode 100644 index 00000000000..6711973a758 --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md @@ -0,0 +1,46 @@ +--- +id: 65ef1afca9a8f6be0d4150ba +title: Step 10 +challengeType: 20 +dashedName: step-10 +--- + +# --description-- + +Set the value of `root` to `None` as at this point, you don't have an approximate value yet. + +# --hints-- + +The value of `root` should be `None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].is_equivalent("low = 0\\nhigh = max(1, square_target)\\nroot = None")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + low = 0 + high = max(1, square_target) + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md new file mode 100644 index 00000000000..69406d9fee2 --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md @@ -0,0 +1,51 @@ +--- +id: 65ef1be2b958cabf712296cd +title: Step 11 +challengeType: 20 +dashedName: step-11 +--- + +# --description-- + +Now you'll repeatedly narrow down the interval by finding the midpoint of the current interval and comparing the square of the midpoint with the target value. + +For that, inside the `else` block, create a `for` loop that runs up to `max_iterations` times. + +# --hints-- + +You should create a `for` loop to iterate over `range(max_iterations)`. Use `_` as the loop variable. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].is_equivalent("for _ in range(max_iterations):\\n pass")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md new file mode 100644 index 00000000000..e5efb88bafc --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md @@ -0,0 +1,78 @@ +--- +id: 65ef1c0a03fcabc04ded7e69 +title: Step 12 +challengeType: 20 +dashedName: step-12 +--- + +# --description-- + +Inside the for loop, calculate the midpoint of the interval ranging from `low` to `high`. Assign this value to a variable `mid`. + +Also, calculate the square of the midpoint (`mid`) and store it in the variable `square_mid`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].has_pass()`)) + + } + +}) + +``` + +You should declare a variable `mid` and assign it `(low + high) / 2` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(` + node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("mid") + values = ["mid = (low + high) / 2", "mid = (high + low) / 2"] + any(node.is_equivalent(val) for val in values) + `)) + + } + +}) +``` + +You should declare a variable `square_mid` and assign it `mid**2` inside the body of the for loop. + +```js +({ test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("square_mid").is_equivalent("square_mid = mid**2")`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md new file mode 100644 index 00000000000..f365f00475d --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md @@ -0,0 +1,53 @@ +--- +id: 65ef1c34a541afc12dbb849d +title: Step 13 +challengeType: 20 +dashedName: step-13 +--- + +# --description-- + +The `abs()` function returns the absolute value of a number, which is always positive, regardless of the number sign. You will use it to check that the estimated square root is close enough to the actual value. + +Now, create an `if` statement to check if the absolute value of the difference between `square_mid` and `square_target` is within the specified `tolerance`. + +# --hints-- + +You should have an `if` statement with the condition `abs(square_mid - square_target) < tolerance:` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[0].is_equivalent("abs(square_mid - square_target) < tolerance")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md new file mode 100644 index 00000000000..7c84ec9d7fe --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md @@ -0,0 +1,68 @@ +--- +id: 65ef1cb031de30c2cde64c12 +title: Step 14 +challengeType: 20 +dashedName: step-14 +--- + +# --description-- + +If the difference is within the specified `tolerance`, set the value of `root` to `mid` and break out of the loop. + +# --hints-- + +You should remove the existing `pass` statement. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].has_pass()`)) + } + +}) + +``` + +You should assign the value of `mid` to `root` and break out of the loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].is_equivalent("root = mid\\nbreak")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md new file mode 100644 index 00000000000..18a6767deab --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md @@ -0,0 +1,71 @@ +--- +id: 65ef1cda150a59c3b8306944 +title: Step 15 +challengeType: 20 +dashedName: step-15 +--- + +# --description-- + +If the difference is not within the specified `tolerance`, create an `elif` statement to check if `square_mid` is less than `square_target`. + +Assign the value of `mid` to `low` as the square root would now lie between `low` and `mid`. + +# --hints-- + +You should create an `elif` statement that checks if `square_mid < square_target`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[1].is_equivalent("square_mid < square_target")`)) + + } + +}) +``` + +You should assign the value of `mid` to `low`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[1].is_equivalent("low = mid")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md new file mode 100644 index 00000000000..06598491f2e --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md @@ -0,0 +1,70 @@ +--- +id: 65ef1d104c2be9c4d8e22075 +title: Step 16 +challengeType: 20 +dashedName: step-16 +--- + +# --description-- + +If both the `if` and `elif` conditions are not met, the value of `mid` would be greater than `square_target`. In this case, create an `else` clause and assign the value of `mid` to `high`. + +# --hints-- + +You should have an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[2]== _Node()`)); + } +}) + +``` + +You should assign the value of `mid` to `high` in the `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[2].is_equivalent("high = mid")`)); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- + elif square_mid < square_target: + low = mid + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md new file mode 100644 index 00000000000..45e3e9987a8 --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md @@ -0,0 +1,76 @@ +--- +id: 65ef1d5e3d2927c5e0f4997b +title: Step 17 +challengeType: 20 +dashedName: step-17 +--- + +# --description-- + +Outside the for loop, create an `if` statement to check if the value of `root` is still `None`. If it is, print the message `'Failed to converge within {max_iterations} iterations.'`. Remember to format the message using an f-string. + +# --hints-- + +You should create an `if` statement that checks if `root is None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[0].is_equivalent("root is None")`)); + + } +}) +``` + +You should pass the argument `f'Failed to converge within {max_iterations} iterations.'` to the `print` function. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].is_equivalent("if root is None:\\n print(f'Failed to converge within {max_iterations} iterations.')")`)); + + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md new file mode 100644 index 00000000000..ffe75554dd8 --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md @@ -0,0 +1,77 @@ +--- +id: 65ef1d924ff2e5c7031c6ce8 +title: Step 18 +challengeType: 20 +dashedName: step-18 +--- + +# --description-- + +Create an `else` clause to handle the case where the value of `root` is not `None`, indicating that a root hass been found. If it is not `None`, print the message `'The square root of {square_target} is approximately {root}'`. Remember to format using an f-string. + +# --hints-- + +You should create an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[1] == _Node()`)); + } +}) + +``` + +You should print `f'The square root of {square_target} is approximately {root}'` within the `else` body. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_bodies()[1].is_equivalent("print(f'The square root of {square_target} is approximately {root}')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md new file mode 100644 index 00000000000..1a2bb01cf56 --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md @@ -0,0 +1,68 @@ +--- +id: 65ef1dd722f6e7c8294eeec4 +title: Step 19 +challengeType: 20 +dashedName: step-19 +--- + +# --description-- + +Finally, return the value of `root` from the `square_root_bisection` function. + +# --hints-- + +You should return `root` at the end of the function. + +```js +({ + test: () => + { + const pyClassStr = runPython(`str(_Node(_code).find_function("square_root_bisection"))`); + assert.match(pyClassStr, /return\s*root/) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md new file mode 100644 index 00000000000..7904b9bceab --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md @@ -0,0 +1,70 @@ +--- +id: 65ef1e10268f8ec9121446d1 +title: Step 20 +challengeType: 20 +dashedName: step-20 +--- + +# --description-- + +Outside the function definiton, create a variable `N` and assign the value of `16` to it. + +# --hints-- + +You should have the variable `N = 16` outside the function definition. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_variable("N").is_equivalent("N = 16")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md new file mode 100644 index 00000000000..71da1b62c03 --- /dev/null +++ b/curriculum/challenges/chinese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md @@ -0,0 +1,115 @@ +--- +id: 65ef1eac497754cafa12a26c +title: Step 21 +challengeType: 20 +dashedName: step-21 +--- + +# --description-- + +Call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +Experiment with larger values. + +With this, you have successfully implemented the bisection method to find the square root of a number. + +# --hints-- + +You should call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +```js +({ + test: () => assert(runPython(`_Node(_code).has_call("square_root_bisection(N)")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- +N = 16 + +--fcc-editable-region-- + +``` + +# --solutions-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +N = 16 +square_root_bisection(N) +``` diff --git a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ef9b03c81a63668521804de.md b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ef9b03c81a63668521804de.md index a211040b613..942dccd33fc 100644 --- a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ef9b03c81a63668521804de.md +++ b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5ef9b03c81a63668521804de.md @@ -7,7 +7,7 @@ dashedName: step-48 # --description-- -请注意,可以同时选择两个单选按钮。 为了使选择一个单选按钮自动取消选择另一个,两个按钮必须有具有相同值的 `name` 属性。 +请注意,可以同时选择两个单选按钮。 To make it so selecting one radio button automatically deselects the other, both buttons must have a `name` attribute with the same value. Here is an example of two radio buttons with the same `name` attribute: diff --git a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md index 6a1489cea18..35fde7c31cd 100644 --- a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md +++ b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md @@ -7,7 +7,7 @@ dashedName: step-8 # --description-- -To see the `cat-head` element, give it a linear gradient background with `#5e5e5e` at `85%` and `#45454f` at `100%`. +To see the `.cat-head` element, give it a linear gradient background with `#5e5e5e` at `85%` and `#45454f` at `100%`. You might not notice the difference between these two colors, but they are there. diff --git a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md index 16296514b09..9859add8e63 100644 --- a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md +++ b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md @@ -11,7 +11,7 @@ Inside your `.cat-ears` element, create two `div` elements with the classes `cat # --hints-- -You should not change the existing `div` element with the class `car-ears`. +You should not change the existing `div` element with the class `cat-ears`. ```js assert(document.querySelectorAll('div.cat-ears').length === 1); diff --git a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md index 0149d59e1eb..49f9b875c7e 100644 --- a/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md +++ b/curriculum/challenges/chinese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md @@ -11,7 +11,7 @@ The last position property value is `sticky`. `sticky` positioning is a hybrid o Change the value of the `position` property of `.cat-head` to `sticky`, set `top` to `0`, then remove `left` and its value. -**Note**: To see how `sticky` works, you have to place a couple of texts before and after your `.cat-head` `div` element. If you scroll up after that, you'll see that the `.cat-head` gets stuck to the top and remains there. +**Note**: To see how `sticky` works, you have to place a couple of texts before and after your `.cat-head` `div` element. If you scroll down after that, you'll see that the `.cat-head` gets stuck to the top and remains there. # --hints-- diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md index 0f93285cb97..5f212983dbc 100644 --- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md +++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md @@ -61,7 +61,7 @@ while (continueLoop) { --fcc-editable-region-- --fcc-editable-region-- -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md index bf40abef119..3f935935d65 100644 --- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md +++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md @@ -44,7 +44,7 @@ let done = 0; while (continueLoop) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md index 9c976287a58..38f1716a030 100644 --- a/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md +++ b/curriculum/challenges/chinese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md @@ -48,7 +48,7 @@ let done = 0; while (done !== count) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/chinese/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md b/curriculum/challenges/chinese/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md index 120ee7d478f..a71de36be0c 100644 --- a/curriculum/challenges/chinese/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md +++ b/curriculum/challenges/chinese/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md @@ -23,15 +23,7 @@ Test value of `__name__` ```js ({ - test: () => assert(__pyodide.runPython(`__name__ == '__main__'`)) -}) -``` - -Test __locals and __pyodide - -```js -({ - test: () => assert(__pyodide.runPython(`__locals.get('add')(4,5) == 9`)) + test: () => assert(runPython(`__name__ == '__main__'`)) }) ``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md index d2139487de3..de4fa3e7ee3 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md @@ -1,6 +1,5 @@ --- id: 658111239f39a01c8f095c44 -videoId: nLDychdBwUg title: "Dialogue 1: What Motivates the Team?" challengeType: 21 dashedName: dialogue-1-what-motivates-the-team @@ -13,3 +12,275 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Maria", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.5, + "dialogue": { + "text": "Hey Maria, I have a question… Do you know what motivates the team?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 4.9, + "finishTime": 7.4, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 8.7, + "finishTime": 12.3, + "dialogue": { + "text": "Hi Brian! Well, one thing that really motivates me is learning new things.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 12.7, + "finishTime": 16, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 16.5, + "finishTime": 18.2, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 19.7, + "finishTime": 20.9, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 21.3, + "finishTime": 24.7, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 25, + "finishTime": 27.2, + "dialogue": { + "text": "But you know what demotivates me sometimes?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 27.7, + "finishTime": 32.6, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 33.1, + "finishTime": 37.3, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 37.7, + "finishTime": 39.7, + "dialogue": { + "text": "Well, collaborating with our creative team", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 39.7, + "finishTime": 42.5, + "dialogue": { + "text": "and brainstorming many ideas really inspires me.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 42.8, + "finishTime": 44.6, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 45.5, + "finishTime": 49, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 49.3, + "finishTime": 53.6, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 54, + "finishTime": 55.5, + "dialogue": { + "text": "It is really frustrating.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 56.5, + "finishTime": 58.4, + "dialogue": { + "text": "Yeah, technical glitches are complicated", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 58.4, + "finishTime": 61, + "dialogue": { + "text": "and there's not much we can do other than try to solve them.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 62, + "finishTime": 63.3, + "dialogue": { + "text": "But do you know what else is great?", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 63.7, + "finishTime": 66.7, + "dialogue": { + "text": "Seeing the team's enthusiasm after solving these issues.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 67.1, + "finishTime": 69.8, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 71.3, + "finishTime": 75.4, + "dialogue": { + "text": "Yeah. Wow. You know what? This was really a motivating talk.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 75.7, + "finishTime": 77.1, + "dialogue": { + "text": "Thanks for sharing your thoughts.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 77.7, + "finishTime": 79.8, + "dialogue": { + "text": "Anytime. It's good to have these discussions.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 80, + "finishTime": 81.6, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "right" + } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 82.1 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 82.6 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md index 5eb9cbab87f..bd40d89ce39 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-6 --- - + # --description-- @@ -18,7 +15,7 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ## --sentence-- -`Well, one thing that really motivates me is _ new things.` +`Hi, Brian. Well, one thing that really motivates me is _ new things.` ## --blanks-- @@ -27,3 +24,47 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ### --feedback-- This word is a gerund, the `-ing` form of the verb used as a noun, indicating the action or process of gaining knowledge. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md index 57d5a2b1a4d..279e2861a88 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-5 --- - + # --description-- @@ -20,7 +17,7 @@ When you add an `s` at the end of a word, like `things`, it means you are talkin ## --sentence-- -`Hi Brian! _, one _ that really motivates me _ learning new _.` +`Hi, Brian! _, one _ that really motivates me _ learning new _.` ## --blanks-- @@ -53,3 +50,47 @@ This is the verb `to be` conjugated in the third person singular. ### --feedback-- Maria uses this word to talk about more than one item or idea she likes to learn. It is the plural form of `thing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md index eee61930dcc..3ecb0ccb702 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-7 --- - + # --description-- @@ -51,3 +48,47 @@ learning new things ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md index 053ae896f0b..80d98bbbc33 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-8 --- - + # --description-- @@ -37,3 +34,47 @@ This word is a gerund describing the activity Maria enjoys related to discoverin ### --feedback-- Another gerund that follows `and`, indicating another activity Maria enjoys, which is about getting better at something. It also ends in `-ing` and serves as a noun. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 15.04 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.28, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.78 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md index fbe4dcc505d..cfa8469782b 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-10 --- - + # --description-- @@ -26,7 +23,7 @@ In `I love exploring many new technologies`, how is `exploring` used? ## --answers-- -As a present continuous +As a verb in the present continuous structure ### --feedback-- @@ -34,7 +31,7 @@ Present continuous are for actions happening now. This is not showing an action --- -As a simple present verb +As a verb in the simple present structure ### --feedback-- @@ -42,11 +39,11 @@ Simple present verbs don't end in `-ing`. --- -As a gerund +As a verb in the gerund form --- -As a past participle +As a verb in the past participle form ### --feedback-- @@ -55,3 +52,47 @@ Past participles are for perfect tenses or as adjectives. This is not used like ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 6.50, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills. It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 7.00 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md index 80690caccd2..252cf48c05b 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-18 --- - + # --description-- @@ -31,3 +28,47 @@ Adding a prefix to a word can change its meaning. ### --feedback-- Maria uses an adjective ending in `-ing` to describe a feeling that is the opposite of `motivating`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 32.22, + "finishTimestamp": 36.08 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.86, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.36 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md index 9001228085f..2ea50eff48d 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-11 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to the audio and complete the sentence. ### --feedback-- This word is used when someone listens to what another person says. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 19.86 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 2.68 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md index f00bebea879..042955730aa 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-12 --- - + # --description-- @@ -49,3 +46,47 @@ This word means to develop or become bigger or more advanced. It ends with `-ing ### --feedback-- This word is related to work or a career. It describes doing something in a way that shows good skills and behavior at a job. it ends with `-ly` + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 20.28, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md index 885332a3dfc..008035b84e7 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-13 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on how skill improvement fits into overall personal and professional dev ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.98, + "dialogue": { + "text": "That's great to hear, Maria. Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.48 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md index a99fd602832..e087041f3d9 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-14 --- - + # --description-- @@ -53,3 +50,65 @@ He's adding to the conversation, not changing the topic. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 26.26 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 2.60, + "finishTime": 5.64, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot,", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 6.02, + "finishTime": 8.58, + "dialogue": { + "text": "but you know what demotivates me sometimes?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 9.08 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md index 0bcef38811f..ed340f1a31c 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md @@ -28,4 +28,48 @@ Listen to the audio and complete the sentence. ### --feedback-- -This word means feeling very happy and eager. +This word means feeling very happy and eager. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 15.32, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.94, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.44 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md index b425e084763..cf6dcc31710 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-16 --- - + # --description-- @@ -55,3 +52,47 @@ This phrase means having plenty of time, which is different from what Brian mean ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md index b5708ac00fe..8de15f47d1c 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-17 --- - + # --description-- @@ -47,3 +44,47 @@ This word is a preposition used to compare or illustrate a similarity to somethi ### --feedback-- It means you are doing something quickly because you do not have much time. It ends with `-ing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md index 5293029060e..f74bac67a8c 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-20 --- + + # --description-- The word `brainstorming` refers to a group discussion to produce ideas and solve problems. @@ -46,3 +48,47 @@ It means adhering to specific instructions, which is not the same as the word. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md index ea82aef1538..1b4aea4a2b1 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-28 --- - + # --description-- @@ -18,7 +15,7 @@ The phrase `slow down` means to decrease in speed or reduce the rate of progress ## --sentence-- -`The problem is encountering many technical issues that make our progress _ _.` +`The problem is encountering many technical issues that _ our progress _.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to describe a decrease in speed or pace. ### --feedback-- This adverb complements the phrase to indicate a reduction or decrease in intensity, speed, or amount. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md index ed1c423927b..bd8c7fa6444 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-32 --- + + # --description-- The phrase `other than` indicates the presence of an alternative or different option. @@ -46,3 +48,47 @@ It means the singular or exclusive option, which is not the same as the phrase. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md index d2a4201ca63..9712d6a3279 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-35 --- - + # --description-- @@ -43,3 +40,47 @@ This possessive adjective is used to refer to something that belongs to the pers ### --feedback-- This noun refers to the reason or reasons one has for acting or behaving in a particular way. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 66.12, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 3.68, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.18 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md index 8f432d36f95..c5b54c0b913 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-38 --- - + # --description-- @@ -29,3 +26,47 @@ In the dialogue, Maria talks about the importance of discussions to help them re ### --feedback-- This verb is used to make someone think of something they might have forgotten. It brings something back into someone's mind. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 76.52, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.08, + "dialogue": { + "text": "Anytime. It's good to have these discussions. It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.58 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md index ba9e43efcb6..974459e9326 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-39 --- - + # --description-- @@ -43,3 +40,47 @@ This pronoun refers to the speaker and at least one other person, indicating a c ### --feedback-- This word is used in the context of continuing forward or persevering in a particular action or state. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 79.06, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.54, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.04 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md index 2f8c34f4dbf..c1b55b444af 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md @@ -1,6 +1,5 @@ --- id: 658160772584ba319849f910 -videoId: nLDychdBwUg title: "Dialogue 2: Asking How Someone Feels" challengeType: 21 dashedName: dialogue-2-asking-how-someone-feels @@ -13,3 +12,239 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Alice", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Tom", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Alice", + "startTime": 2, + "finishTime": 5.6, + "dialogue": { + "text": "Hi Tom, you look a bit down these days. Is everything okay?", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 6.3, + "finishTime": 9.5, + "dialogue": { + "text": "Hey Alice, yeah, I feel a bit demotivated.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 9.8, + "finishTime": 13.6, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 13.8, + "finishTime": 16.7, + "dialogue": { + "text": "It's exhausting, and it feels like I'm constantly running", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 16.7, + "finishTime": 18.1, + "dialogue": { + "text": "without knowing where I'm going.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 18.9, + "finishTime": 22.7, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 23.4, + "finishTime": 25.7, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 26.2, + "finishTime": 28.8, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 28.8, + "finishTime": 30.6, + "dialogue": { + "text": "instead of working together as a team.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 31.3, + "finishTime": 34.7, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 35, + "finishTime": 38.4, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 38.9, + "finishTime": 41.7, + "dialogue": { + "text": "Sometimes, it feels like we're meeting for no reason,", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 41.7, + "finishTime": 44.3, + "dialogue": { + "text": "and it's hard to find time to actually work on projects.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 45, + "finishTime": 48.4, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 49, + "finishTime": 52.6, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 52.6, + "finishTime": 56.6, + "dialogue": { + "text": "without any variation. It feels like I'm wasting my skills and creativity.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 57.06, + "finishTime": 59, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 59.6, + "finishTime": 62.8, + "dialogue": { + "text": "Repeating the same tasks over and over can be demotivating.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 63.2, + "finishTime": 66.4, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 66.8, + "finishTime": 69.4, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation,", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 69.4, + "finishTime": 71.3, + "dialogue": { + "text": "and it's good to share and support each other.", + "align": "left" + } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 71.8 + }, + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 72.3 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md index b8674840c93..9a3003405af 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-40 --- - + # --description-- @@ -22,7 +19,7 @@ In this conversation, Alice notices something about Tom's mood and asks if he's ## --sentence-- -`Hi Tom, you look a bit _ _ days. Is everything okay?` +`Hi, Tom. You look a bit _ _ days. Is everything okay?` ## --blanks-- @@ -39,3 +36,47 @@ This word is used to describe feeling sad or unhappy. It's like when you're not ### --feedback-- This word is used with `days` to talk about the current time or the recent period. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 0.98, + "finishTimestamp": 4.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.60, + "dialogue": { + "text": "Hi, Tom. You look a bit down these days. Is everything okay?", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.10 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md index 8fe09a43d89..fdd78d7f84d 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-41 --- - + # --description-- @@ -20,7 +17,7 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ## --sentence-- -`Hey Alice, yeah, I feel a bit _.` +`Hey, Alice. Yeah, I feel a bit _.` ## --blanks-- @@ -29,3 +26,47 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ### --feedback-- This word is used to describe how Tom feels. It ends with `ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 8.48 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md index a8f6062add9..e30ea2d793a 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-42 --- - + # --description-- @@ -46,8 +43,52 @@ This word means `lacking` or `not having` something. --- -`break` +`breaks` ### --feedback-- -This word refers to a short period of rest or pause from work or activity. +This word refers to a short period of rest or pause from work or activity. Use the plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 8.84, + "finishTimestamp": 12.60 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.76, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.26 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md index 90185d888a6..b19719a1211 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-43 --- - + # --description-- @@ -45,3 +42,47 @@ This word means something is happening all the time or very often. ### --feedback-- This word is used to indicate the absence of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 12.82, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 5.30, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.80 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md index b6f27b9c9b9..524c4be5635 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-44 --- - + # --description-- @@ -18,7 +15,7 @@ Tom talks about what's making him feel demotivated. Let's figure out what is bot ## --text-- -What is making Tom feel demotivated and why? +What is making Tom feel demotivated? ## --answers-- @@ -51,3 +48,65 @@ Reflect on Tom's words about his work routine and how it makes him feel. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.54, + "finishTime": 8.3, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 8.52, + "finishTime": 12.82, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 13.32 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md index 23f853581be..b084d8c5f2d 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-45 --- - + # --description-- @@ -51,3 +48,47 @@ She understands how Tom feels ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 18.98 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 2.28, + "dialogue": { + "text": "I totally get that, Tom.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 2.78 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md index 95b626db8ab..18b3ede5a71 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-46 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working more hours than what is normally required, often beyond ### --feedback-- This word describes something that makes you feel very tired, like it's taking all your energy away. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 21.72 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.02, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.52 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md index 8e581dc301d..143b260cab0 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-47 --- - + # --description-- @@ -35,3 +32,47 @@ This word means managing or handling, especially when the situation is challengi ### --feedback-- This word, in the context of the office, refers to the social and power dynamics among coworkers and within the workplace environment. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 24.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.52, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.02 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md index ffd2e2364d2..5c132f9bd9c 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-48 --- - + # --description-- @@ -45,3 +42,47 @@ This word means making an effort to do something, often something challenging. ### --feedback-- This word is about doing tasks, especially with others to achieve a common goal or finish a project. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 25.02, + "finishTimestamp": 29.38 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.36, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.86 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md index eed7315d9fd..1c59d0c36f8 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-49 --- - + # --description-- @@ -51,3 +48,65 @@ Reflect on the specific aspect of work that Alice mentions she hates dealing wit ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 29.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.9, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 5.64, + "finishTime": 7.96, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 8.4, + "finishTime": 12.88, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 13.38 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md index 008029728ad..89639635494 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-50 --- - + # --description-- @@ -22,11 +19,11 @@ Tom is agreeing with Alice about a specific aspect of work that they find unplea ## --blanks-- -`dealing` +`Dealing` ### --feedback-- -This word means managing or handling something, often implying that it's not an easy or enjoyable task. +This word means managing or handling something, often implying that it's not an easy or enjoyable task. Don't forget the capitalization. --- @@ -35,3 +32,47 @@ This word means managing or handling something, often implying that it's not an ### --feedback-- In the context of an office, this word refers to the social and power dynamics among coworkers. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 30.08, + "finishTimestamp": 33.46 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md index 33c828a005d..eb1ae62b875 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-51 --- - + # --description-- @@ -45,3 +42,47 @@ This word is part of a expression that means something is making Tom upset or an ### --feedback-- This word is used when you're talking about experiencing something, like when you have a lot of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md index f182b582c7f..9e516b17b69 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-52 --- - + # --description-- @@ -51,3 +48,47 @@ He wishes for even more meetings ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md index 43b8ae258c9..f457d5cb4c2 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-53 --- - + # --description-- -Listen to the audio and answer the question. +Listen to the audio and fill in the blanks. # --fillInTheBlank-- @@ -51,3 +48,47 @@ This word means to discover or locate something. It's often used when you're loo ### --feedback-- This word is used to emphasize what is really true or happening. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md index e12e17d47ff..a0c2ef0d79a 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-54 --- - + # --description-- @@ -51,3 +48,47 @@ They take away time from working on projects ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md index 2bd6b036fb7..97dde90f3cb 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-55 --- - + # --description-- @@ -24,7 +21,7 @@ Alice: I hear you, Tom. Sitting in meetings for hours can be discouraging. ## --sentence-- -`_ in meetings for hours can be _.` +`I hear you, Tom. _ in meetings for hours can be _.` ## --blanks-- @@ -41,3 +38,47 @@ This word describes the action of being seated. It is capitalized. ### --feedback-- This word means something that makes you feel less confident or willing to continue. It ends in `ing`, showing it's describing the effect of the action. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md index da3c221a1f1..30aeb3ff460 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md @@ -5,12 +5,7 @@ challengeType: 19 dashedName: task-56 --- - + # --description-- @@ -53,3 +48,47 @@ Consider what Alice means by `discouraging` in the context of meetings. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md index c60324ba8d3..2957a5033ab 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-57 --- - + # --description-- @@ -43,3 +40,47 @@ This word is used to describe a large number of things grouped together. It's li ### --feedback-- This word refers to having different types or changes in something. It's the opposite of doing the same thing over and over. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 52.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 6.02, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.52 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md index 63d0a5a5643..cf49c33b69a 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-58 --- - + # --description-- @@ -35,3 +32,47 @@ This word means not using something valuable in a good or effective way. It's li ### --feedback-- This word refers to the ability to make new things or think of new ideas. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 53.24, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.34, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 3.84 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md index 540a3a77c0f..e189fc50af5 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-59 --- - + # --description-- @@ -51,3 +48,56 @@ Consider what Alice says directly annoys her versus how she feels about another ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md index ef09e4af19b..a5f87b483bd 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-60 --- - + # --description-- @@ -51,3 +48,56 @@ Think about whether meetings are mentioned in the context of wasting skills and ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md index fa7b1328561..7f182561d7f 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-61 --- - + # --description-- @@ -39,3 +36,47 @@ This auxiliary verb is used here to emphasize the verb that follows it, making t ### --feedback-- This adjective describes feelings of annoyance or irritation, often because of obstacles or difficulties. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 58.00 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.14, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 3.64 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md index e2e6ee3f118..d0f7a57efaa 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-62 --- - + # --description-- @@ -55,3 +52,47 @@ This word, when used twice with `and` in between, emphasizes the repetition of a ### --feedback-- This word describes something that reduces your desire or willingness to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 61.78 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "That does sound frustrating, Alice. Repeating the same tasks over and over can be demotivating.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md index 27d721f5a0a..bef09034af7 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-63 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to describe an emotional experience or sensation, in this case ### --feedback-- This word is the plural of `this`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md index 1721b02d9e4..c2eefbb7b7d 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-65 --- - + # --description-- @@ -51,3 +48,47 @@ For listening to him ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md index 80ad6cb9859..dc1a51e3b48 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-66 --- - + # --description-- @@ -51,3 +48,47 @@ This word means to tell others about your own experiences, thoughts, or feelings ### --feedback-- This word involves giving help or encouragement, showing you are there for someone. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md index 88359a9631c..ae0f2da0a0d 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-67 --- - + # --description-- @@ -51,3 +48,47 @@ The value of sharing feelings and supporting one another ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md index 01535bb27f7..e34ef923278 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-64 --- - + # --description-- @@ -44,3 +41,46 @@ This word is the middle part of the phrase used to casually introduce new inform This word completes the phrase, indicating a casual addition or shift in the conversation. +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md index abd512abbb8..fb7e5ccda2d 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md @@ -1,6 +1,5 @@ --- id: 65a351bd69b0b72d7ed24eb5 -videoId: nLDychdBwUg title: "Dialogue 3: Talking About Motivations to Pursue a Career" challengeType: 21 dashedName: dialogue-3-talking-about-motivations-to-pursue-a-career @@ -13,3 +12,212 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Lisa", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5, + "dialogue": { + "text": "Hey Lisa, what motivated you to choose a career in tech?", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 6, + "finishTime": 8.5, + "dialogue": { + "text": "One of my main motivations was the financial stability", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 8.8, + "finishTime": 10, + "dialogue": { + "text": "that tech jobs can provide.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 10.4, + "finishTime": 12.8, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 13.3, + "finishTime": 16.3, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 17.4, + "finishTime": 19.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 19.8, + "finishTime": 24, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 24, + "finishTime": 26, + "dialogue": { + "text": "and have different perspectives.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 26.8, + "finishTime": 29.2, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 29.2, + "finishTime": 32.1, + "dialogue": { + "text": "Another thing was the chance to be part of projects", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 32.1, + "finishTime": 34.2, + "dialogue": { + "text": "that push the limits of innovation and creativity.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 34.9, + "finishTime": 36, + "dialogue": { + "text": "I'm with you on that one.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 36.1, + "finishTime": 39.6, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 39.7, + "finishTime": 43.1, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 44.3, + "finishTime": 47.3, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 47.3, + "finishTime": 49.6, + "dialogue": { + "text": "and finding practical solutions is really thrilling.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 50.3, + "finishTime": 53, + "dialogue": { + "text": "Knowing that we solved problems is really exciting, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 53.4, + "finishTime": 56.7, + "dialogue": { + "text": "I hope we keep getting as much motivation from it as we can.", + "align": "left" + } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.2 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.7 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md index e165f760c08..23c160c642f 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-68 --- - + # --description-- @@ -18,7 +15,7 @@ Brian: Hey Lisa, what motivated you to choose a career in tech? ## --sentence-- -`Hey Lisa, what _ you to _ a career in tech?` +`Hey, Lisa, what _ you to _ a career in tech?` ## --blanks-- @@ -34,4 +31,48 @@ This word means something gave you a reason or desire to do something. It ends w ### --feedback-- -This verb is about making a decision between different options. +This verb is about making a decision between different options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md index 94e4ccd2b3e..3a96b95c93a 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-69 --- - + # --description-- @@ -51,3 +48,47 @@ What motivated her to pick a tech career ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md index 47d7700e414..9dc5f7bc32d 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-70 --- - + # --description-- @@ -37,3 +34,47 @@ The most important. ### --feedback-- Being steady, meaning you don't have to worry too much about it. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md index afed572b3be..22a27d6cb43 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-71 --- - + # --description-- @@ -35,3 +32,47 @@ This word is a past tense verb used to describe a state or condition in the past ### --feedback-- This verb means to give or supply something needed, like help, information, or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md index a5031402575..f006bbf44d1 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-72 --- - + # --description-- @@ -52,3 +48,71 @@ Reflect on Lisa's statement and whether travel is mentioned as a motivation. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.50 + }, + { + "character": "Lisa", + "opacity": 1, + "startTime": 5.50 + }, + { + "character": "Lisa", + "startTime": 5.82, + "finishTime": 10.02, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md index e71f55301a3..4b20a9bd448 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-73 --- - + # --description-- @@ -37,3 +34,47 @@ This verb means giving permission or making it possible to do something. this ve ### --feedback-- This noun describes the feeling of being certain about your abilities or something you're going to do. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 9.48, + "finishTimestamp": 11.90 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.42, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 3.92 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md index 4f8c68dfebb..ca8b0a42958 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-74 --- - + # --description-- @@ -39,3 +36,47 @@ This word refers to different areas of work or study. It's plural here because s ### --feedback-- This verb is used to talk about successfully reaching a goal, especially after putting in effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 12.16, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md index d0951b06bde..84aca093d52 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-75 --- - + # --description-- @@ -51,3 +48,65 @@ Lisa doesn't mention working less. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md index 1e5b8911585..9bd217faa04 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-76 --- - + # --description-- The words `much` and `many` are used to talk about quantity. @@ -52,3 +49,65 @@ Reflect on Lisa's statement about what makes tech jobs stand out for her. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md index 38a5ed3758e..013e56a7705 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-77 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to Brian's response to Lisa and fill in the missing word that shows he st ### --feedback-- This adverb is used to emphasize the truth or importance of a statement, showing strong agreement or belief. it ends with `ly`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 18.38 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.40, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.90 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md index 620135fd503..145afc143d8 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-78 --- - + # --description-- @@ -51,3 +48,47 @@ This word is used to describe different areas of study or work. This word is in ### --feedback-- These are different ways of viewing or thinking about something. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 18.80, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.20, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.70 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md index 5f88ce8ca38..56d23563f4a 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-79 --- - + # --description-- @@ -51,3 +48,56 @@ Consider Brian's interest in working across many fields versus concentrating on ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 3.82, + "finishTime": 10.02, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md index 9867dd455d5..36fa55aa8ae 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-80 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working together with others. Notice it ends with `-ing`, indica ### --feedback-- This adjective describes something that is thrilling or full of energy. It ends with `-ing`, showing a quality or state. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.62, + "finishTimestamp": 28.18 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md index 31ed219cb44..d126871e672 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-81 --- - + # --description-- @@ -45,3 +42,47 @@ TTo extend or go beyond usual limits or boundaries. It's often used to talk abou ### --feedback-- This noun refers to new ideas, products, or methods that improve something or solve problems. It's about coming up with new ways to do things. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 28.38, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md index 976777de56e..19ed243bc7e 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-82 --- - + # --description-- @@ -51,3 +48,56 @@ Consider whether Lisa's motivation is related to work environment or the nature ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.94 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md index cc4a931a4a1..9d83cc465d3 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-83 --- - + # --description-- @@ -52,3 +48,80 @@ He agrees with Lisa ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 34.98 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.45 + }, + { + "character": "Brian", + "opacity": 1, + "startTime": 8.45 + }, + { + "character": "Brian", + "startTime": 8.57, + "finishTime": 10.16, + "dialogue": { + "text": "I'm with you on that one.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.66 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md index 3c748ab456e..c9ec667c225 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-84 --- - + # --description-- @@ -37,3 +34,47 @@ This noun describes the ability to change or adapt easily according to different ### --feedback-- This word refers to the specific functions or positions that individuals can have within a group or organization. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 38.36 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.76 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md index f111304b929..566d8c5e7db 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-85 --- - + # --description-- @@ -20,7 +17,7 @@ Listen carefully and fill in the missing words about what tech roles make possib ## --sentence-- -`They _ us to balance our jobs with personal _ and hobbies.` +`I'm also interested in the flexibility that tech roles offer. They _ us to balance our jobs with personal _ and hobbies.` ## --blanks-- @@ -37,3 +34,56 @@ This verb means to make something possible or to give permission for something. ### --feedback-- This noun refers to things you enjoy doing, like hobbies or activities that catch your attention. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md index 0efe7ddf734..f5aab15821c 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-86 --- - + # --description-- @@ -55,3 +52,56 @@ Is Brian talking about traveling, or is he interested in something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md index 1828c2b24fd..f285c7e7f50 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-87 --- - + # --description-- @@ -45,3 +42,47 @@ This word means discovering or coming up with something, like an answer or solut ### --feedback-- This adjective means very exciting. It often describes something that makes your heart beat faster because it's so exciting or fun. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md index a2b77cc1c45..689b3e667de 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-88 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on the word `satisfaction` and if it suggests feeling tired. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md index 122529e8f39..fd8178da8fc 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-89 --- - + # --description-- @@ -43,3 +40,47 @@ This adjective describes something that is thrilling or causes great enthusiasm. ### --feedback-- This word means receiving or obtaining something. Here, it's also in the `-ing` form, indicating an ongoing action or process. Remember to use double `t`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md index f8bb1a273ee..a72f4990d84 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-90 --- - + # --description-- @@ -53,3 +50,47 @@ Brian talks about being excited by solving problems, not about where to find mot ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md index 93a91f9790d..f0a8796d57b 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md @@ -13,3 +13,221 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Bob", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sarah", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.6, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech?", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 5, + "finishTime": 7, + "dialogue": { + "text": "It's all those amazing gadgets!", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 7.8, + "finishTime": 9.6, + "dialogue": { + "text": "I can see your enthusiasm, Bob!", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 9.9, + "finishTime": 12.3, + "dialogue": { + "text": "Tell me, which tech gadgets are your absolute favorites?", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 13, + "finishTime": 16.2, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 16.3, + "finishTime": 18.9, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health,", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 19.2, + "finishTime": 22.7, + "dialogue": { + "text": "and even helps me stay organized with reminders and notifications.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 23.7, + "finishTime": 26, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 26, + "finishTime": 28.1, + "dialogue": { + "text": "The camera quality, the speed,", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 28.3, + "finishTime": 30.8, + "dialogue": { + "text": "and the number of apps available are what I like the most.", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 31.2, + "finishTime": 33.9, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 34.3, + "finishTime": 37.2, + "dialogue": { + "text": "Gadgets like these are transforming our daily lives.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 37.6, + "finishTime": 40.8, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 41.3, + "finishTime": 44, + "dialogue": { + "text": "I love capturing stunning aerial shots", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 44, + "finishTime": 46.5, + "dialogue": { + "text": "and exploring new angles for photography.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 47.7, + "finishTime": 50.3, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 50.7, + "finishTime": 52.7, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 52.7, + "finishTime": 54.5, + "dialogue": { + "text": "It's amazing how these innovations", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 54.5, + "finishTime": 56.8, + "dialogue": { + "text": "keep making our lives more interesting and connected.", + "align": "right" + } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.3 + }, + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.8 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md index 2f5b51c5efe..1c735765ddb 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-91 --- - + # --description-- @@ -47,3 +44,47 @@ This word is used to point out specific things that are being talked about, in t ### --feedback-- This word refers to small electronic devices or tools that are useful or interesting. It's often used to talk about cool tech items. It is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md index 06bb47f4e2f..7ddc748e75b 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-92 --- - + # --description-- @@ -51,3 +48,47 @@ The latest technology gadgets ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md index 746bfa4615b..96ed9a633c9 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-93 --- - + # --description-- @@ -27,3 +24,47 @@ Sarah: I can see your enthusiasm, Bob! ### --feedback-- This noun describes the feeling of being very excited or interested in something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 8.60 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 2.74, + "dialogue": { + "text": "I can see your enthusiasm, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.24 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md index a7eb6fcbfcb..4f55a749a61 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-94 --- - + # --description-- @@ -22,7 +19,7 @@ Sarah: I can see your enthusiasm, Bob! Tell me, which tech gadgets are your abso ## --sentence-- -`Tell me, _ tech gadgets are your _ favorites?` +`I can see your enthusiasm, Bob! Tell me, _ gadgets are your _ favorites?` ## --blanks-- @@ -39,3 +36,47 @@ This word asks for a specific choice or selection from a known group of items. ### --feedback-- This adjective emphasizes that the choice is the most complete or total among all options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 11.36 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.50, + "dialogue": { + "text": "I can see your enthusiasm, Bob. Tell me, which gadgets are your absolute favorites?", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.00 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md index 09bd788377d..9514f27cc60 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-95 --- - + # --description-- @@ -35,3 +32,47 @@ This preposition is used to show that something belongs to or is part of somethi ### --feedback-- This noun refers to a type of watch that has more features than just telling time, often including apps and internet connectivity. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 15.20 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.66 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md index b247dacc6dd..feadc88525d 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md @@ -5,10 +5,8 @@ challengeType: 22 dashedName: task-96 --- - + + # --description-- `To track` means to follow or monitor the progress, movement, or development of something or someone. @@ -44,3 +42,47 @@ This verb means to monitor or follow the course or progress of something, especi ### --feedback-- This verb means to make it easier or possible for someone to do something by offering services or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md index 99dcae91a0c..2c3332a8708 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-97 --- - + # --description-- @@ -45,3 +42,47 @@ This adjective means arranged in a systematic way, especially on a large scale. ### --feedback-- These are alerts or messages that prompt you to remember tasks or appointments. This word ends with `s`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md index 4d36b7b2989..49fbdc264ee 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-98 --- - + # --description-- @@ -51,3 +48,56 @@ It keeps him connected, tracks his health, and helps him stay organized ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.32, + "finishTime": 10.70, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 11.20 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md index 7185d037ed7..2d1e897054c 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-99 --- - + # --description-- @@ -35,3 +32,47 @@ This word is capitalized and in plural form. ### --feedback-- This word describes advanced mobile phones with extensive computing capabilities and connectivity. It is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 25.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.98 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md index 1f660afcb03..81e873d902e 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-100 --- - + # --description-- @@ -53,3 +50,47 @@ This adjective means something can be accessed or used, like apps in an app stor ### --feedback-- This word is used to indicate the highest degree or the greatest amount of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 25.24, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.60, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.10 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md index 6998dd4ffa5..1e063e1befc 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-101 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on whether design is a factor in Sarah's stated preferences. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.56, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 3.68, + "finishTime": 8.08, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 8.58 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md index dac54e85492..92b3b88cee4 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-102 --- - + # --description-- @@ -43,3 +40,47 @@ This verb means causing a significant change or improvement in something. This w ### --feedback-- This adjective refers to something that happens every day or is part of everyday life. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md index 66cda46110d..6e56479dc8d 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-103 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Bob mentions radio as a factor in transforming daily life. ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md index ec96099aa49..93b5cc92a66 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-104 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to talk about the current period of time or the present days. ### --feedback-- This noun refers to remote-controlled flying machines, often used for photography, racing, or recreation. This word is capitalized. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 39.78 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.20, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.70 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md index 2eb13bfcb4b..7bdc1f302f5 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-105 --- - + # --description-- @@ -43,3 +40,47 @@ This verb involves examining or investigating something in order to learn more a ### --feedback-- This noun refers to the art, practice, or job of taking pictures with a camera, capturing moments, and expressions. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md index 08e3ab9b847..95aa8e526fc 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-106 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective describes something extremely beautiful or impressive. ### --feedback-- In photography, this noun means photographs or the act of taking a photograph. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md index 1b7d3770f1d..f8e77d3a9fe 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-107 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective refers to something related to the air or happening in the sky. ### --feedback-- This noun refers to the specific viewpoints or positions from which photos are taken. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md index c172cb36554..cf2a562eb4c 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-108 --- - + # --description-- @@ -51,3 +48,56 @@ They allow for stunning aerial photography ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.2, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.78, + "finishTime": 9.98, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 10.48 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md index a67e640bd01..64e3aa577d5 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-109 --- - + # --description-- @@ -35,3 +32,47 @@ This adjective in the expression means allowing access, passage, or a view throu ### --feedback-- This noun refers to things that may happen or be the case in the future, often exciting or beneficial opportunities. it is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.48, + "finishTimestamp": 49.32 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.84, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 4.34 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md index a7c5acbe452..9a5e4ff7dc6 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-110 --- - + # --description-- @@ -35,3 +32,47 @@ This noun describes a strong feeling of enthusiasm or excitement for something o ### --feedback-- In this context, this adjective means that a feeling, especially a positive one like enthusiasm, can spread from one person to others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 49.52, + "finishTimestamp": 51.74 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.22, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.72 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md index 0578945ebcc..c64025643be 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-111 --- - + # --description-- @@ -51,3 +48,47 @@ This adjective describes something that arouses curiosity or is enjoyable and en ### --feedback-- This adjective means being in touch with others or having easy access to information, especially through technology. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 51.94, + "finishTimestamp": 56.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.10, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 5.60 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md index bc02e1710e1..fe30597a170 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-112 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on the enthusiasm and positivity in Sarah's statement. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.28, + "finishTimestamp": 55.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 6.26, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob. Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 6.46, + "finishTime": 10.36, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 10.86 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md index ebba772a320..20eaca5ac90 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md @@ -1,6 +1,5 @@ --- id: 65a533f54a5afeff6c6bb996 -videoId: nLDychdBwUg title: "Dialogue 5: Discussing Open-source Software" challengeType: 21 dashedName: dialogue-5-discussing-open-source-software @@ -13,3 +12,284 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Tom", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sophie", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.5, + "dialogue": { + "text": "Hey, Sophie, what motivates you", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 3.8, + "finishTime": 6.9, + "dialogue": { + "text": "to work on open-source software projects in your free time?", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 7.8, + "finishTime": 10.2, + "dialogue": { + "text": "Well, I love contributing to open-source projects!", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 10.5, + "finishTime": 13, + "dialogue": { + "text": "I really like the sense of community and collaboration.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 13.5, + "finishTime": 15.4, + "dialogue": { + "text": "It's incredible how people from around the world", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 15.4, + "finishTime": 17.5, + "dialogue": { + "text": "come together to create something amazing.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 18.2, + "finishTime": 20.4, + "dialogue": { + "text": "Yeah. I checked out some open-source projects,", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 20.5, + "finishTime": 23.1, + "dialogue": { + "text": "but I admit that I have problems with the amount of time", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 23.1, + "finishTime": 24.3, + "dialogue": { + "text": "it can take to contribute.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 24.7, + "finishTime": 27.1, + "dialogue": { + "text": "Sometimes, it can be so time-consuming.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 27.1, + "finishTime": 29.7, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 29.9, + "finishTime": 33.3, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 33.8, + "finishTime": 36.5, + "dialogue": { + "text": "Open source is all about transparency and accessibility,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 36.5, + "finishTime": 38.4, + "dialogue": { + "text": "and that's something I truly believe in.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 39, + "finishTime": 42.2, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 42.7, + "finishTime": 45.7, + "dialogue": { + "text": "For me, I like the idea of practicing my skills", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 45.7, + "finishTime": 48, + "dialogue": { + "text": "and getting recognition for my contributions.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 48.5, + "finishTime": 51.4, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 52.4, + "finishTime": 56, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 56.4, + "finishTime": 58, + "dialogue": { + "text": "there isn't much you can do to save it.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 58.4, + "finishTime": 61.4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 62.2, + "finishTime": 65.2, + "dialogue": { + "text": "That's true. The sustainability of open-source projects", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 65.2, + "finishTime": 67.5, + "dialogue": { + "text": "is something I'm growing to appreciate more.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 67.8, + "finishTime": 69.2, + "dialogue": { + "text": "Thanks for sharing your motivations.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 69.8, + "finishTime": 71.7, + "dialogue": { + "text": "I think I'll see if I can find a project", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 71.7, + "finishTime": 72.8, + "dialogue": { + "text": "to dedicate some spare time to.", + "align": "left" + } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 73.3 + }, + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 73.8 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md index a463dcea5d0..ee5d378ba03 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-113 --- - + # --description-- @@ -37,3 +34,47 @@ This preposition is used to indicate involvement or engagement in a particular a ### --feedback-- This part of the term refers to the origin or starting point, in this case, indicating that the software's foundational code is open and accessible to all. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md index 2d227ef6fe5..1e409d23632 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-114 --- - + # --description-- @@ -51,3 +48,47 @@ Think about whether Tom is asking about skills or the reasons behind an activity ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md index ab28bfe2622..395d2fa3522 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-115 --- - + # --description-- @@ -20,7 +17,7 @@ Sophie: Well, I love contributing to open-source projects! I really like the sen ## --sentence-- -`I really like the sense of _ and _.` +`Well, I love contributing to open-source projects! I really like the sense of _ and _.` ## --blanks-- @@ -37,3 +34,47 @@ Describes a group of people who share common interests or values, especially in ### --feedback-- Refers to the act of working with someone to produce or create something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md index c9e678c193b..e321ce0b307 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-116 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Sophie's enjoyment comes from personal recognition or somethi ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md index 7b9101449a3..6a2c024d0c1 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-117 --- - + # --description-- @@ -45,3 +42,47 @@ Refers to the earth or the globe. ### --feedback-- Indicates the act of joining with others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md index d2ba30725da..3917f0f08f3 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-118 --- - + # --description-- @@ -51,3 +48,47 @@ Sophie talks about working as a group. Is it about being famous or doing somethi ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md index a0b608d8342..a41f1bfc8cb 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-119 --- - + # --description-- @@ -20,7 +17,7 @@ Tom: Yeah. I checked some open-source projects, but I admit that I have problems ## --sentence-- -`Yeah. I checked some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` +`Yeah, I checked out some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` ## --blanks-- @@ -37,3 +34,47 @@ This verb means to confess or acknowledge something, often reluctantly. ### --feedback-- This noun is used to describe the quantity or measure of something, in this case, referring to time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 23.34 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.28, + "dialogue": { + "text": "Yeah, I checked out some open-source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.78 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md index 6bcebcf1558..64acf0261ac 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-120 --- - + # --description-- @@ -18,7 +15,7 @@ Tom "Sometimes, it can be so time-consuming." ## --sentence-- -`Sometimes, it can be _ time-_.` +`Sometimes it can be _ time-_.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to emphasize the degree of something, in this case, how much t ### --feedback-- This word describes activities that use up a lot of time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 23.52, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.64, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.14 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md index 2bbaf6f322f..a2ad29fdb26 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-121 --- - + # --description-- @@ -51,3 +48,56 @@ Think about if Tom says the projects are easy or something else. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Yeah, I checked out some open source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 7.46, + "finishTime": 10.10, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 10.60 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md index 26975fa42d5..52145efc9dc 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-122 --- - + # --description-- @@ -21,7 +18,7 @@ For example, if you say: `I decided to learn a new language and practice every d ## --sentence-- -`It can _ a _.` +`I understand, Tom. It can _ a _.` ## --blanks-- @@ -38,3 +35,47 @@ This word is used to talk about something being true or existing. ### --feedback-- This word means a promise to do something or give your time to it, showing you are ready to work hard and keep your word. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 28.72 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md index 4232fcd5dbb..10d1d55dd1f 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-123 --- - + # --description-- @@ -35,3 +32,47 @@ This verb, in this context, means to tolerate or bear, especially when talking a ### --feedback-- This adjective describes something not open or accessible to the general public or kept for the use of a specific person or group. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md index 25acc5b187b..4920280d317 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-124 --- - + # --description-- @@ -35,3 +32,47 @@ This word, ending in `-ing`, means to observe or witness something happening.. ### --feedback-- Also ending in `-ing`, this word is used to describe the state or condition of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md index e4878ae4f6c..feb206c8d3b 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-125 --- - + # --description-- @@ -37,3 +34,51 @@ This word means being open and clear about things. It ends with `-y`, showing it ### --feedback-- This word is about making things easy for everyone to use or get. It ends with `-ity`, showing it's about the state of being accessible. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 32.52, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 5.74, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.24 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md index 2e6e266c6ab..b1b1c1ca42c 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-126 --- - + # --description-- -Sophie expresses her thoughts on open-source projects.. +Sophie expresses her thoughts on open-source projects. # --question-- @@ -51,3 +48,56 @@ Reflect on Sophie's belief in open source and its benefits. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 7.16, + "dialogue": { + "text": "I understand, Tom. It can be a commitment, but I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.56, + "finishTime": 12.10, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 12.60 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md index 9ef306c9252..e6c5fe030c7 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-127 --- - + # --description-- @@ -35,3 +32,51 @@ This noun refers to the quality of being open and clear, especially about proces ### --feedback-- This noun describes something that provides a reason or incentive for someone to act in a certain way or to put in more effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 41.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md index bbaba54e9e1..e05f1982063 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-128 --- - + # --description-- @@ -37,3 +34,51 @@ This verb means to perform an activity or exercise repeatedly or regularly in or ### --feedback-- This noun refers to the action or process of acknowledging someone's efforts, achievements, or qualities. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 41.5, + "finishTimestamp": 47.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.62, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.12 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md index a821137445a..5d15ffd7545 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-129 --- - + # --description-- @@ -35,3 +32,51 @@ This adjective is used to describe something that is very good or impressive. ### --feedback-- This adjective means having the ability, power, or qualities necessary to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 47.54, + "finishTimestamp": 50.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.9, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.4 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md index 76ee25756a6..045d8463245 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-130 --- - + # --description-- @@ -51,3 +48,69 @@ Reflect on whether Tom's attraction to open-source is about tight schedules. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 50.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.42, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.88, + "finishTime": 10.2, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 10.72, + "finishTime": 13.62, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 14.12 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md index f47924c5a21..763fa02b646 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-131 --- - + # --description-- @@ -18,7 +15,7 @@ Sophie: Also, when software becomes obsolete because it's no longer maintained, ## --sentence-- -`Also, when software becomes _, there isn't _ you can do to _ it.` +`Also, when software becomes _ because it's no longer maintained, there isn't _ you can do to _ it.` ## --blanks-- @@ -43,3 +40,51 @@ This word is used to indicate a small amount or degree; not a lot. ### --feedback-- This verb means to keep safe or rescue from harm or danger, in this context, to try and make something usable again. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md index 27b0dbb43cf..a187bb8b293 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-132 --- - + # --description-- @@ -43,3 +40,51 @@ Something that once was true or possible is not the case anymore. ### --feedback-- This contraction of `is not` is used to express the negation of the statement that follows, indicating a limitation or impossibility. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md index 8941733f8b9..ca97fa188f9 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-133 --- - + # --description-- @@ -51,3 +48,51 @@ It can't be used effectively anymore ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md index e225360b121..baadc6b07e8 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-134 --- - + # --description-- @@ -18,7 +15,7 @@ AUDIO REFERENCE: ## --sentence-- -`With open-_, there's always a _ for continuous improvement.` +`With open _, there's always a _ for continuous improvement.` ## --blanks-- @@ -35,3 +32,51 @@ Refers to a model where the source code is available for anyone to see, modify, ### --feedback-- This noun means an opportunity or possibility for something to happen or be done, especially something desirable. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md index 410699942ed..15c83340f6f 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-135 --- - + # --description-- @@ -35,3 +32,51 @@ It indicates an ongoing, unending process of enhancement or development. ### --feedback-- It refers to the act of making something better, more effective, or more efficient. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md index a8c886124e7..7718697bd96 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-137 --- - + # --description-- @@ -27,3 +24,51 @@ Tom: The sustainability of open-source projects is something I'm growing to appr ### --feedback-- It refers to the ongoing development of open-source projects over the long term. it ends with `-y`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md index dcc88c43208..d6ae5f89d89 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-138 --- - + # --description-- -`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time,` means they might not like them at first, but after some timethey start to like them more. +`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time` means they might not like them at first, but after some timethey start to like them more. # --fillInTheBlank-- @@ -34,4 +31,52 @@ This word means being able to continue over time in a good way. ### --feedback-- -Starting to like something more as you understand it better. +Starting to like something more as you understand it better. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md index ecd1d6e7c95..abc9cf2415f 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-139 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on Tom's statement about sustainability and appreciation, not complexity ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md index a6a32b631e8..87c40eaf830 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-140 --- - + # --description-- @@ -47,3 +44,51 @@ This verb means to discover or locate something after searching for it. ### --feedback-- Describes time that is available to use as you wish, not taken up by work or other obligations. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md index bd2fddb1bb4..52d0740b1db 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-141 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on whether Tom's interest is in language learning or engaging in a proje ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md index ea7dbd6dc1e..05dc28f6ddc 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-1 --- - + # --description-- @@ -18,7 +15,7 @@ Listen to what Brian asks Maria. Pay attention to the verbs he uses. ## --sentence-- -`Hey Maria, I _ a question. Do you know what _ the team?` +`Maria, I _ a question. Do you know what _ the team?` ## --blanks-- @@ -35,3 +32,47 @@ This verb is used when someone is in possession of something or wants to express ### --feedback-- This word means to give someone a reason to do something. This verb in conjugated in the third person. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 3.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.02 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md index d39e86e67e9..ef6b246a2e4 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-2 --- - + # --description-- @@ -39,3 +36,47 @@ This word is used to indicate the reason or cause of something. It is conjugated ### --feedback-- It ends with `-ed` because it's an adjective that comes from a verb. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 3.92, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.50, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.00 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md index 5c39c1c7312..050241fa5e6 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-3 --- - + # --description-- @@ -20,7 +17,7 @@ Listen to the audio and complete the sentence. ## --sentence-- -`Hey Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` +`Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` ## --blanks-- @@ -37,3 +34,56 @@ Think about the word that means to give someone a reason to do something right n ### --feedback-- This word describes how someone feels when they have a reason or desire to do something. This word ends with `-ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md index 4a6aa89ed04..90a6bbe82b3 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md @@ -5,20 +5,17 @@ challengeType: 19 dashedName: task-4 --- - + # --description-- -In the dialogue, Brian asks three questions but they are all connected. +In the dialogue, Brian asks a couple of related questions. # --question-- ## --text-- -`What is Brian asking Maria about?` +What is Brian asking Maria about? ## --answers-- @@ -51,3 +48,56 @@ The conversation is centered around motivation, not the physical location of whe ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md index 3e923e63532..f725307b614 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-21 --- - + # --description-- @@ -36,3 +33,46 @@ This word means working together with others on a project or task. It ends with This word means thinking of many ideas together with a group of people. It ends with `-ing`. +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md index 1c4102ed1d3..2522ee2b5e1 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-22 --- - + # --description-- @@ -51,3 +48,47 @@ Maria refers to her creative team, not her friends, as her collaborators. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.28 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.28 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md index c3f28429a68..ab0e4646869 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-23 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to create or produce something, especially ideas or solutions. ### --feedback-- This word refers to ideas or plans that are used in thinking, discussion, or creating something new. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 41.84, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.78, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.28 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md index c2510030f2c..8795bdf6d10 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-24 --- - + # --description-- @@ -51,3 +48,56 @@ Collaborating with the creative team ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.70, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.14, + "finishTime": 7.92, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 8.42 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md index 3c6ee35860c..b801e7efce9 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-25 --- - + # --description-- @@ -35,3 +32,47 @@ This word means working together with others to achieve a goal. This word is cap ### --feedback-- This word refers to the use of imagination or original ideas to create something. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 48.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.22 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md index a9680b0824a..75c938c595f 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-27 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to find something or someone without planning to, especially pro ### --feedback-- This word is used for problems with machines or computers that need special knowledge to understand or fix. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md index 5ee0b89f981..89a97ac83d7 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-29 --- - + # --description-- @@ -27,3 +24,47 @@ When something is `frustrating`, it makes you feel upset or annoyed because you ### --feedback-- This word is used when something makes you feel upset or annoyed because it is difficult or impossible to deal with. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 53.02, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.50, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.00 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md index 1f9e7b21387..02733f0f66c 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-30 --- - + # --description-- @@ -51,3 +48,65 @@ Does having many ideas make Brian frustrated, or is it something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 5.02, + "finishTime": 9.34, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 9.74, + "finishTime": 11.24, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 11.74 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md index 3dddb17e8ef..47e9d5633b4 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-31 --- - + # --description-- @@ -35,3 +32,47 @@ This word means little problems with things like computers or apps. When there a ### --feedback-- This word means to make an effort to do something, especially when it's hard. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md index fe21921444c..ce9ced73581 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-33 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether taking a break is mentioned as a way to deal with glitches. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md index 69d94c303e5..7c44898f823 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-34 --- - + # --description-- @@ -37,3 +34,47 @@ This word means being very excited or eager about something. It's like when you ### --feedback-- This word means finding a way to fix a problem. It's like when you figure out the answer to a difficult question. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.76, + "finishTimestamp": 65.66 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.90, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.40 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md index 0365cb0e9f0..17d79cd22ec 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md @@ -6,10 +6,7 @@ dashedName: task-36 --- - + # --description-- @@ -52,3 +49,56 @@ Reflect on whether the speed of solving problems is what Maria highlights as mot ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.96, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.7, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.16, + "finishTime": 8.84, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 9.34 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md index 7525fdadd5f..39df7aceed5 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-37 --- - + # --description-- @@ -18,7 +15,7 @@ In this part of the conversation, Brian talks about how the talk made him feel a ## --sentence-- -`Yeah. Wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` +`Yeah, wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` ## --blanks-- @@ -35,3 +32,47 @@ This word means something that gives you energy or a reason to do something. It' ### --feedback-- This word means giving something that you have to others. It's like when you tell someone your ideas or feelings. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 70.38, + "finishTimestamp": 76.10 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 6.72, + "dialogue": { + "text": "Yeah, wow. You know what? This was a really motivating talk. Thanks for sharing your thoughts.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.22 + } + ] +} +``` diff --git a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md index 6bb2b29cd3b..b1bcee11103 100644 --- a/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md +++ b/curriculum/challenges/chinese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-136 --- - + # --description-- @@ -51,3 +48,60 @@ Reflect on the connection between updates and user experience Sophie suggests. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.02, + "finishTime": 10.02, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md b/curriculum/challenges/espanol/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md index 946a4e361af..c3570de77b2 100644 --- a/curriculum/challenges/espanol/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md +++ b/curriculum/challenges/espanol/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md @@ -26,7 +26,7 @@ Acá tenemos un ejemplo: # --instructions-- -Es hora de salir del Camper Cat y conocer a nuestro compañero Zersiax (@zersiax), un campeón en accesibilidad y un usuario de lector de pantalla. Para escuchar el fragmento de audio de su lector de pantalla en acción, agregue un elemento `audio` después del elemento `p`. Incluye el atributo `controls`. Luego coloque un elemento `source` dentro de las etiquetas `audio` con el atributo `src` establecido en `https://s3.amazonaws.com/freecodecamp /screen-reader.mp3` y el atributo `type` establecido en `"audio/mpeg"`. +Es hora de salir del Camper Cat y conocer a nuestro compañero Zersiax (@zersiax), un campeón en accesibilidad y un usuario de lector de pantalla. Para escuchar el fragmento de audio de su lector de pantalla en acción, agregue un elemento `audio` después del elemento `p`. Incluye el atributo `controls`. Then place a `source` element inside the `audio` tags with the `src` attribute set to `https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3` and `type` attribute set to `"audio/mpeg"`. **Note:** El clip del audio puede sonar rápido y quizás sea difícil de entender pero esta velocidad es normal para los lectores de pantalla. @@ -70,7 +70,7 @@ El valor para el atributo `src` en `source` debe coincidir exactamente con el li ```js assert( $('source').attr('src') === - 'https://s3.amazonaws.com/freecodecamp/screen-reader.mp3' + 'https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3' ); ``` @@ -108,7 +108,7 @@ assert($('source').attr('type') === 'audio/mpeg');

A sound clip of Zersiax's screen reader in action.

diff --git a/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md b/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md index 86b87a51be5..cba2eac6097 100644 --- a/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md +++ b/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md @@ -93,7 +93,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -186,7 +186,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md b/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md index 91b4c0a89fd..fd7eb43e1b0 100644 --- a/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md +++ b/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md @@ -102,7 +102,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -198,7 +198,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md b/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md index 92c63e08ff9..488ffc2730d 100644 --- a/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md +++ b/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md @@ -95,7 +95,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -190,7 +190,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md b/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md index eaddc345f23..1cd9d2c9e93 100644 --- a/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md +++ b/curriculum/challenges/espanol/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md @@ -98,7 +98,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -192,7 +192,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md new file mode 100644 index 00000000000..47a2bcd6988 --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md @@ -0,0 +1,887 @@ +--- +id: 5e44413e903586ffb414c94e +title: Build a Budget App Project +challengeType: 23 +forumTopicId: 462361 +dashedName: build-a-budget-app-project +--- + +# --description-- + +Complete the `Category` class. It should be able to instantiate objects based on different budget categories like *food*, *clothing*, and *entertainment*. When objects are created, they are passed in the name of the category. The class should have an instance variable called `ledger` that is a list. The class should also contain the following methods: + +- A `deposit` method that accepts an amount and description. If no description is given, it should default to an empty string. The method should append an object to the ledger list in the form of `{"amount": amount, "description": description}`. +- A `withdraw` method that is similar to the `deposit` method, but the amount passed in should be stored in the ledger as a negative number. If there are not enough funds, nothing should be added to the ledger. This method should return `True` if the withdrawal took place, and `False` otherwise. +- A `get_balance` method that returns the current balance of the budget category based on the deposits and withdrawals that have occurred. +- A `transfer` method that accepts an amount and another budget category as arguments. The method should add a withdrawal with the amount and the description "Transfer to [Destination Budget Category]". The method should then add a deposit to the other budget category with the amount and the description "Transfer from [Source Budget Category]". If there are not enough funds, nothing should be added to either ledgers. This method should return `True` if the transfer took place, and `False` otherwise. +- A `check_funds` method that accepts an amount as an argument. It returns `False` if the amount is greater than the balance of the budget category and returns `True` otherwise. This method should be used by both the `withdraw` method and `transfer` method. + +When the budget object is printed it should display: + +- A title line of 30 characters where the name of the category is centered in a line of `*` characters. +- A list of the items in the ledger. Each line should show the description and amount. The first 23 characters of the description should be displayed, then the amount. The amount should be right aligned, contain two decimal places, and display a maximum of 7 characters. +- A line displaying the category total. + +Here is an example usage: + +```py +food = Category("Food") +food.deposit(1000, "deposit") +food.withdraw(10.15, "groceries") +food.withdraw(15.89, "restaurant and more food for dessert") +clothing = Category("Clothing") +food.transfer(50, clothing) +print(food) +``` + +And here is an example of the output: + +```bash +*************Food************* +initial deposit 1000.00 +groceries -10.15 +restaurant and more foo -15.89 +Transfer to Clothing -50.00 +Total: 923.96 +``` + +Besides the `Category` class, create a function (outside of the class) called `create_spend_chart` that takes a list of categories as an argument. It should return a string that is a bar chart. + +The chart should show the percentage spent in each category passed in to the function. The percentage spent should be calculated only with withdrawals and not with deposits. Down the left side of the chart should be labels 0 - 100. The "bars" in the bar chart should be made out of the "o" character. The height of each bar should be rounded down to the nearest 10. The horizontal line below the bars should go two spaces past the final bar. Each category name should be written vertically below the bar. There should be a title at the top that says "Percentage spent by category". + +This function will be tested with up to four categories. + +Look at the example output below very closely and make sure the spacing of the output matches the example exactly. + +```bash +Percentage spent by category +100| + 90| + 80| + 70| + 60| o + 50| o + 40| o + 30| o + 20| o o + 10| o o o + 0| o o o + ---------- + F C A + o l u + o o t + d t o + h + i + n + g +``` + +# --hints-- + +The `deposit` method should create a specific object in the ledger instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit(self): + self.food.deposit(900, "deposit") + actual = self.food.ledger[0] + expected = {"amount": 900, "description": "deposit"} + self.assertEqual(actual, expected, 'Expected "deposit" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `deposit` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit_no_description(self): + self.food.deposit(45.56) + actual = self.food.ledger[0] + expected = {"amount": 45.56, "description": ""} + self.assertEqual(actual, expected, 'Expected calling "deposit" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should create a specific object in the `ledger` instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": "milk, cereal, eggs, bacon, bread"} + self.assertEqual(actual, expected, 'Expected "withdraw" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `withdraw` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": ""} + self.assertEqual(actual, expected, 'Expected "withdraw" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `True` if the withdrawal took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + self.assertEqual(good_withdraw, True, 'Expected "withdraw" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `food.deposit(900, "deposit")` and `food.withdraw(45.67, "milk, cereal, eggs, bacon, bread")` should return a balance of `854.33`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_get_balance(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.get_balance() + expected = 854.33 + self.assertEqual(actual, expected, 'Expected balance to be 854.33') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `transfer` method on a category object should create a specific ledger item in that category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.food.ledger[2] + expected = {"amount": -transfer_amount, "description": "Transfer to Entertainment"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `True` if the transfer took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + self.assertEqual(good_transfer, True, 'Expected "transfer" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `transfer` on a category object should reduce the balance in the category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + food_balance_before = self.food.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + food_balance_after = self.food.get_balance() + self.assertEqual(food_balance_before - food_balance_after, transfer_amount, 'Expected "transfer" method to reduce balance in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should increase the balance of the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + entertainment_balance_before = self.entertainment.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + entertainment_balance_after = self.entertainment.get_balance() + self.assertEqual(entertainment_balance_after - entertainment_balance_before, transfer_amount, 'Expected "transfer" method to increase balance in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should create a specific ledger item in the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.entertainment.ledger[0] + expected = {"amount": transfer_amount, "description": "Transfer from Food"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `False` if the amount passed to the method is greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(20) + expected = False + self.assertEqual(actual, expected, 'Expected "check_funds" method to be False') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `True` if the amount passed to the method is not greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(10) + expected = True + self.assertEqual(actual, expected, 'Expected "check_funds" method to be True') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `False` if the withdrawal didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_funds(self): + self.food.deposit(100, "deposit") + good_withdraw = self.food.withdraw(100.10) + self.assertEqual(good_withdraw, False, 'Expected "withdraw" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `False` if the transfer didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer_no_funds(self): + self.food.deposit(100, "deposit") + good_transfer = self.food.transfer(200, self.entertainment) + self.assertEqual(good_transfer, False, 'Expected "transfer" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Printing a `Category` instance should give a different string representation of the object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_to_string(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + self.food.transfer(20, self.entertainment) + actual = str(self.food) + expected = "*************Food*************\\ndeposit 900.00\\nmilk, cereal, eggs, bac -45.67\\nTransfer to Entertainme -20.00\\nTotal: 834.33" + self.assertEqual(actual, expected, 'Expected different string representation of object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +` + const out = runPython(testCode); + assert(out); + } +}) +``` + +`create_spend_chart` should print a different chart representation. Check that all spacing is exact. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + self.business = budget.Category("Business") + + def test_create_spend_chart(self): + self.food.deposit(900, "deposit") + self.entertainment.deposit(900, "deposit") + self.business.deposit(900, "deposit") + self.food.withdraw(105.55) + self.entertainment.withdraw(33.40) + self.business.withdraw(10.99) + actual = budget.create_spend_chart([self.business, self.food, self.entertainment]) + expected = "Percentage spent by category\\n100| \\n 90| \\n 80| \\n 70| o \\n 60| o \\n 50| o \\n 40| o \\n 30| o \\n 20| o o \\n 10| o o \\n 0| o o o \\n ----------\\n B F E \\n u o n \\n s o t \\n i d e \\n n r \\n e t \\n s a \\n s i \\n n \\n m \\n e \\n n \\n t " + self.assertEqual(actual, expected, 'Expected different chart representation. Check that all spacing is exact.') +`); + + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Category: + pass + +def create_spend_chart(categories): + pass +``` + +# --solutions-- + +```py +class Category: + + def __init__(self, name): + self.name = name + self.ledger = [] + self.balance = 0 + self.spent = 0 + + def __str__(self): + first_line = f'{self.name.center(30, "*")}\n' + lines = '' + total = f'Total: {format(self.balance, ".2f")}' + + for n in range(len(self.ledger)): + descr = self.ledger[n]["description"][:23] + am = format(float(self.ledger[n]["amount"]), ".2f")[:7] + lines = lines + f'{descr:<23}{am:>7}\n' + + return f'{first_line}{lines}{total}' + + def deposit(self, amount, description=''): + self.ledger.append({ + 'amount': float(amount), + 'description': description + }) + self.balance = self.balance + float(amount) + + def withdraw(self, amount, description=''): + if self.check_funds(amount): + self.ledger.append({ + 'amount': -float(amount), + 'description': description + }) + self.balance = self.balance - float(amount) + self.spent = self.spent + float(amount) + return True + else: + return False + + def get_balance(self): + return self.balance + + def transfer(self, amount, category): + if self.check_funds(amount): + # withdraw + self.ledger.append({ + 'amount': -float(amount), + 'description': f'Transfer to {category.name}' + }) + self.balance = self.balance - float(amount) + # deposit + category.deposit(amount, f'Transfer from {self.name}') + + return True + else: + return False + + def check_funds(self, amount): + if float(amount) > self.balance: + return False + else: + return True + + +def create_spend_chart(categories): + total_expenses = 0 + obj = {} + col1 = [] + str = [] + final_str = 'Percentage spent by category\n' + label_max_length = 0 + label_strings = [] + + for category in categories: + total_expenses = total_expenses + category.spent + obj[category.name] = {'expenses': category.spent} + obj[category.name]['label'] = list(category.name) + if len(obj[category.name]['label']) > label_max_length: + label_max_length = len(obj[category.name]['label']) + + for category in categories: + obj[category.name]['percent'] = ( + (category.spent / total_expenses * 100) // 10) * 10 + obj[category.name]['column'] = [] + for i in range(0, 110, 10): + if obj[category.name]['percent'] >= i: + obj[category.name]['column'].insert(0, 'o') + else: + obj[category.name]['column'].insert(0, ' ') + + for i in range(0, 110, 10): + col1.insert(0, i) + + for i in range(11): + str.append("") + for key in obj: + str[i] += (f'{obj[key]["column"][i]} ') + final_str += f'{col1[i]:>3}| {str[i]}\n' + final_str += f' {"-"*(1+3*len(obj))}\n ' + + for i in range(label_max_length): + label_strings.append(' ') + for k in obj: + if len(obj[k]['label']) < label_max_length: + obj[k]['label'].extend( + f'{" "*(label_max_length-len(obj[k]["label"]))}') + + label_strings[i] += f'{obj[k]["label"][i]} ' + if i < label_max_length - 1: + label_strings[i] += '\n ' + final_str += label_strings[i] + + print(final_str) + return (final_str) + +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md new file mode 100644 index 00000000000..ef719adc3a7 --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md @@ -0,0 +1,869 @@ +--- +id: 5e444147903586ffb414c94f +title: Build a Polygon Area Calculator Project +challengeType: 23 +forumTopicId: 462363 +dashedName: build-a-polygon-area-calculator-project +--- + +# --description-- + +In this project you will use object oriented programming to create a `Rectangle` class and a `Square` class. The `Square` class should be a subclass of `Rectangle`, and inherit its methods and attributes. + +## Rectangle class + +When a Rectangle object is created, it should be initialized with `width` and `height` attributes. The class should also contain the following methods: + +- `set_width` +- `set_height` +- `get_area`: Returns area (`width * height`) +- `get_perimeter`: Returns perimeter (`2 * width + 2 * height`) +- `get_diagonal`: Returns diagonal (`(width ** 2 + height ** 2) ** .5`) +- `get_picture`: Returns a string that represents the shape using lines of "\*". The number of lines should be equal to the height and the number of "\*" in each line should be equal to the width. There should be a new line (`\n`) at the end of each line. If the width or height is larger than 50, this should return the string: "Too big for picture.". +- `get_amount_inside`: Takes another shape (square or rectangle) as an argument. Returns the number of times the passed in shape could fit inside the shape (with no rotations). For instance, a rectangle with a width of 4 and a height of 8 could fit in two squares with sides of 4. + +Additionally, if an instance of a `Rectangle` is represented as a string, it should look like: `Rectangle(width=5, height=10)` + +## Square class + +The `Square` class should be a subclass of `Rectangle`. When a `Square` object is created, a single side length is passed in. The `__init__` method should store the side length in both the `width` and `height` attributes from the `Rectangle` class. + +The `Square` class should be able to access the `Rectangle` class methods but should also contain a `set_side` method. If an instance of a `Square` is represented as a string, it should look like: `Square(side=9)` + +Additionally, the `set_width` and `set_height` methods on the `Square` class should set both the width and height. + +## Usage example + +```py +rect = Rectangle(10, 5) +print(rect.get_area()) +rect.set_height(3) +print(rect.get_perimeter()) +print(rect) +print(rect.get_picture()) + +sq = Square(9) +print(sq.get_area()) +sq.set_side(4) +print(sq.get_diagonal()) +print(sq) +print(sq.get_picture()) + +rect.set_height(8) +rect.set_width(16) +print(rect.get_amount_inside(sq)) +``` + +That code should return: + +```bash +50 +26 +Rectangle(width=10, height=3) +********** +********** +********** + +81 +5.656854249492381 +Square(side=4) +**** +**** +**** +**** + +8 +``` + +# --hints-- + +The `Square` class should be a subclass of the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_subclass(self): + actual = issubclass(shape_calculator.Square, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a subclass of the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `Square` class should be a distinct class from the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_distinct_classes(self): + actual = shape_calculator.Square is not shape_calculator.Rectangle + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a distinct class from the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +A square object should be an instance of the `Square` class and the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_is_square_and_rectangle(self): + actual = isinstance(self.sq, shape_calculator.Square) and isinstance(self.sq, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected square object to be an instance of the Square class and the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Rectangle(3, 6)` should be `Rectangle(width=3, height=6)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_string(self): + actual = str(self.rect) + expected = "Rectangle(width=3, height=6)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle to be "Rectangle(width=3, height=6)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Square(5)` should be `Square(side=5)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_string(self): + actual = str(self.sq) + expected = "Square(side=5)" + self.assertEqual(actual, expected, 'Expected string representation of square to be "Square(side=5)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_area()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_area(self): + actual = self.rect.get_area() + expected = 18 + self.assertEqual(actual, expected, 'Expected area of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_area()` should return `25`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_area(self): + actual = self.sq.get_area() + expected = 25 + self.assertEqual(actual, expected, 'Expected area of square to be 25') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_perimeter()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_perimeter(self): + actual = self.rect.get_perimeter() + expected = 18 + self.assertEqual(actual, expected, 'Expected perimeter of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_perimeter()` should return `20`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_perimeter(self): + actual = self.sq.get_perimeter() + expected = 20 + self.assertEqual(actual, expected, 'Expected perimeter of square to be 20') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_diagonal()` should return `6.708203932499369`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_diagonal(self): + actual = self.rect.get_diagonal() + expected = 6.708203932499369 + self.assertEqual(actual, expected, 'Expected diagonal of rectangle to be 6.708203932499369') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_diagonal()` should return `7.0710678118654755`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_diagonal(self): + actual = self.sq.get_diagonal() + expected = 7.0710678118654755 + self.assertEqual(actual, expected, 'Expected diagonal of square to be 7.0710678118654755') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Rectangle` class should have a different string representation after setting new values. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_set_attributes(self): + self.rect.set_width(7) + self.rect.set_height(8) + actual = str(self.rect) + expected = "Rectangle(width=7, height=8)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle after setting new values to be "Rectangle(width=7, height=8)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_side()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_side(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_width()` or `set_height()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_height(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') + self.sq.set_width(4) + actual = str(self.sq) + expected = "Square(side=4)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting width to be "Square(side=4)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Rectangle` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_picture(self): + self.rect.set_width(7) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "*******\\n*******\\n*******\\n" + self.assertEqual(actual, expected, 'Expected rectangle picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Square` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_picture(self): + self.sq.set_side(2) + actual = self.sq.get_picture() + expected = "**\\n**\\n" + self.assertEqual(actual, expected, 'Expected square picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return the string `Too big for picture.` if the `width` or `height` attributes are larger than `50`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_big_picture(self): + self.rect.set_width(51) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "Too big for picture." + self.assertEqual(actual, expected, 'Expected message: "Too big for picture."') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(15,10).get_amount_inside(Square(5))` should return `6`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + self.sq = shape_calculator.Square(5) + + def test_get_amount_inside(self): + self.rect.set_height(10) + self.rect.set_width(15) + actual = self.rect.get_amount_inside(self.sq) + expected = 6 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 6.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(4,8).get_amount_inside(Rectangle(3, 6))` should return `1`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_two_rectangles(self): + rect2 = shape_calculator.Rectangle(4, 8) + actual = rect2.get_amount_inside(self.rect) + expected = 1 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 1.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(2,3).get_amount_inside(Rectangle(3, 6))` should return `0`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_none(self): + rect2 = shape_calculator.Rectangle(2, 3) + actual = rect2.get_amount_inside(self.rect) + expected = 0 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 0.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Rectangle: + pass + +class Square: + pass +``` + +# --solutions-- + +```py +class Rectangle: + def __init__(self, width, height): + self.width = width + self.height = height + + def __str__(self): + return f'Rectangle(width={self.width}, height={self.height})' + + def set_width(self, width): + self.width = width + + def set_height(self, height): + self.height = height + + def get_area(self): + area = self.width * self.height + return area + + def get_perimeter(self): + perimeter = self.width * 2 + self.height * 2 + return perimeter + + def get_diagonal(self): + diagonal = (self.width ** 2 + self.height ** 2) ** 0.5 + return diagonal + + def get_picture(self): + if self.width < 50 and self.height < 50: + picture = f'{"*"*self.width}\n'*self.height + return picture + else: + return 'Too big for picture.' + + def get_amount_inside(self, polygon): + h_number = self.height // polygon.height + w_number = self.width // polygon.width + repetition = h_number * w_number + return repetition + + +class Square(Rectangle): + def __init__(self, side): + self.width = side + self.height = side + + def __str__(self): + return f'Square(side={self.width})' + + def set_width(self, side): + self.width = side + self.height = side + + def set_height(self, side): + self.height = side + self.width = side + + def set_side(self,side): + self.width = side + self.height = side + +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md new file mode 100644 index 00000000000..94cf5c682de --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md @@ -0,0 +1,300 @@ +--- +id: 5e44414f903586ffb414c950 +title: Build a Probability Calculator Project +challengeType: 23 +forumTopicId: 462364 +dashedName: build-a-probability-calculator-project +--- + +# --description-- + +Suppose there is a hat containing 5 blue balls, 4 red balls, and 2 green balls. What is the probability that a random draw of 4 balls will contain at least 1 red ball and 2 green balls? While it would be possible to calculate the probability using advanced mathematics, an easier way is to write a program to perform a large number of experiments to estimate an approximate probability. + +For this project, you will write a program to determine the approximate probability of drawing certain balls randomly from a hat. + +First, create a `Hat` class in `main.py`. The class should take a variable number of arguments that specify the number of balls of each color that are in the hat. For example, a class object could be created in any of these ways: + +```py +hat1 = Hat(yellow=3, blue=2, green=6) +hat2 = Hat(red=5, orange=4) +hat3 = Hat(red=5, orange=4, black=1, blue=0, pink=2, striped=9) +``` + +A hat will always be created with at least one ball. The arguments passed into the hat object upon creation should be converted to a `contents` instance variable. `contents` should be a list of strings containing one item for each ball in the hat. Each item in the list should be a color name representing a single ball of that color. For example, if your hat is `{"red": 2, "blue": 1}`, `contents` should be `["red", "red", "blue"]`. + +The `Hat` class should have a `draw` method that accepts an argument indicating the number of balls to draw from the hat. This method should remove balls at random from `contents` and return those balls as a list of strings. The balls should not go back into the hat during the draw, similar to an urn experiment without replacement. If the number of balls to draw exceeds the available quantity, return all the balls. + +Next, create an `experiment` function in `main.py` (not inside the `Hat` class). This function should accept the following arguments: + +- `hat`: A hat object containing balls that should be copied inside the function. +- `expected_balls`: An object indicating the exact group of balls to attempt to draw from the hat for the experiment. For example, to determine the probability of drawing 2 blue balls and 1 red ball from the hat, set `expected_balls` to `{"blue":2, "red":1}`. +- `num_balls_drawn`: The number of balls to draw out of the hat in each experiment. +- `num_experiments`: The number of experiments to perform. (The more experiments performed, the more accurate the approximate probability will be.) + +The `experiment` function should return a probability. + +For example, if you want to determine the probability of getting at least two red balls and one green ball when you draw five balls from a hat containing six black, four red, and three green. To do this, you will perform `N` experiments, count how many times `M` you get at least two red balls and one green ball, and estimate the probability as `M/N`. Each experiment consists of starting with a hat containing the specified balls, drawing several balls, and checking if you got the balls you were attempting to draw. + +Here is how you would call the `experiment` function based on the example above with 2000 experiments: + +```py +hat = Hat(black=6, red=4, green=3) +probability = experiment(hat=hat, + expected_balls={"red":2,"green":1}, + num_balls_drawn=5, + num_experiments=2000) +``` + +The output would be something like this: + +```bash +0.356 +``` + +Since this is based on random draws, the probability will be slightly different each time the code is run. + +_Hint: Consider using the modules that are already imported at the top. Do not initialize random seed within the file._ + + +# --hints-- + +Creation of `hat` object should add correct contents. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_class_contents(self): + hat = probability_calculator.Hat(red=3,blue=2) + actual = hat.contents + expected = ["red","red","red","blue","blue"] + self.assertEqual(actual, expected, 'Expected creation of hat object to add correct contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method in `hat` class should reduce number of items in contents. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw(self): + hat = probability_calculator.Hat(red=5,blue=2) + actual = hat.draw(2) + expected = ['blue', 'red'] + self.assertEqual(actual, expected, 'Expected hat draw to return two random items from hat contents.') + actual = len(hat.contents) + expected = 5 + self.assertEqual(actual, expected, 'Expected hat draw to reduce number of items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method should behave correctly when the number of balls to extract is bigger than the number of balls in the hat. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw_2(self): + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + actual = hat.draw(20) + expected = ['yellow', 'yellow', 'yellow', 'yellow', 'yellow', 'red', 'green', 'green', 'green', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'test'] + self.assertEqual(actual, expected, 'Expected hat draw to return all items from hat contents.') + actual = len(hat.contents) + expected = 0 + self.assertEqual(actual, expected, 'Expected hat draw to leave no items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `experiment` method should return a different probability. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_prob_experiment(self): + hat = probability_calculator.Hat(blue=3,red=2,green=6) + probability = probability_calculator.experiment(hat=hat, expected_balls={"blue":2,"green":1}, num_balls_drawn=4, num_experiments=1000) + actual = probability + expected = 0.272 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + probability = probability_calculator.experiment(hat=hat, expected_balls={"yellow":2,"blue":3,"test":1}, num_balls_drawn=20, num_experiments=100) + actual = probability + expected = 1.0 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +# --seed-- + +## --seed-contents-- + +```py +import copy +import random + +class Hat: + pass + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + pass +``` + +# --solutions-- + +```py +import copy +import random + +class Hat: + def __init__(self, **hat): + self.hat = hat + contents = [] + for i in hat: + for j in range(hat[i]): + contents.append(i) + self.contents = contents + + + def draw(self, number): + drawn = [] + if number >= len(self.contents): + drawn.extend(self.contents) + self.contents = [] + else: + for i in range(number): + drawn.append( + self.contents.pop(random.randrange(len(self.contents))) + ) + return drawn + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + expected_balls_list = [] + drawn_list = [] + success = 0 + for i in expected_balls: + for j in range(expected_balls[i]): + expected_balls_list.append(i) + for j in range(num_experiments): + hat_copy = copy.deepcopy(hat) + drawn_list.append(hat_copy.draw(num_balls_drawn)) + exp_ball_list_copy = expected_balls_list[:] + for k in range(len(drawn_list[j])): + try: + ind = exp_ball_list_copy.index(drawn_list[j][k]) + exp_ball_list_copy.pop(ind) + except: + continue + if len(exp_ball_list_copy) == 0: + success += 1 + probability = success/num_experiments + return probability +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md new file mode 100644 index 00000000000..05e60f0b74a --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md @@ -0,0 +1,582 @@ +--- +id: 5e444136903586ffb414c94d +title: Build a Time Calculator Project +challengeType: 23 +forumTopicId: 462360 +dashedName: build-a-time-calculator-project +--- + +# --description-- + +Write a function named `add_time` that takes in two required parameters and one optional parameter: + +- a start time in the 12-hour clock format (ending in AM or PM) +- a duration time that indicates the number of hours and minutes +- (optional) a starting day of the week, case insensitive + +The function should add the duration time to the start time and return the result. + +If the result will be the next day, it should show `(next day)` after the time. If the result will be more than one day later, it should show `(n days later)` after the time, where "n" is the number of days later. + +If the function is given the optional starting day of the week parameter, then the output should display the day of the week of the result. The day of the week in the output should appear after the time and before the number of days later. + +Below are some examples of different cases the function should handle. Pay close attention to the spacing and punctuation of the results. + +```py +add_time('3:00 PM', '3:10') +# Returns: 6:10 PM + +add_time('11:30 AM', '2:32', 'Monday') +# Returns: 2:02 PM, Monday + +add_time('11:43 AM', '00:20') +# Returns: 12:03 PM + +add_time('10:10 PM', '3:30') +# Returns: 1:40 AM (next day) + +add_time('11:43 PM', '24:20', 'tueSday') +# Returns: 12:03 AM, Thursday (2 days later) + +add_time('6:30 PM', '205:12') +# Returns: 7:42 AM (9 days later) +``` + +Do not import any Python libraries. Assume that the start times are valid times. The minutes in the duration time will be a whole number less than 60, but the hour can be any whole number. + +# --hints-- +Calling `add_time('3:30 PM', '2:12')` should return `'5:42 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +import time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period(self): + actual = time_calculator.add_time("3:30 PM", "2:12") + expected = "5:42 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12" to return "5:42 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:55 AM', '3:12')` should return `'3:07 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_different_period(self): + actual = time_calculator.add_time("11:55 AM", "3:12") + expected = "3:07 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:55 AM", "3:12" to return "3:07 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected time to end with `'(next day)'` when it is the next day. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_next_day(self): + actual = time_calculator.add_time("9:15 PM", "5:30") + expected = "2:45 AM (next day)" + self.assertEqual(actual, expected, 'Expected time to end with "(next day)" when it is the next day.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected period to change from `AM` to `PM` at `12:00`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_period_change_at_twelve(self): + actual = time_calculator.add_time("11:40 AM", "0:25") + expected = "12:05 PM" + self.assertEqual(actual, expected, 'Expected period to change from AM to PM at 12:00') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00')` should return `'2:59 AM (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four(self): + actual = time_calculator.add_time("2:59 AM", "24:00") + expected = "2:59 AM (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00" to return "2:59 AM (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05')` should return `'12:04 AM (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later(self): + actual = time_calculator.add_time("11:59 PM", "24:05") + expected = "12:04 AM (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05" to return "12:04 AM (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02')` should return `'6:18 AM (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration(self): + actual = time_calculator.add_time("8:16 PM", "466:02") + expected = "6:18 AM (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02" to return "6:18 AM (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected adding `0:00` to return the initial time. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_no_change(self): + actual = time_calculator.add_time("5:01 AM", "0:00") + expected = "5:01 AM" + self.assertEqual(actual, expected, 'Expected adding 0:00 to return initial time.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('3:30 PM', '2:12', 'Monday')`should return `'5:42 PM, Monday'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period_with_day(self): + actual = time_calculator.add_time("3:30 PM", "2:12", "Monday") + expected = "5:42 PM, Monday" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12", "Monday" to return "5:42 PM, Monday"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00', 'saturDay')` should return `'2:59 AM, Sunday (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four_with_day(self): + actual = time_calculator.add_time("2:59 AM", "24:00", "saturDay") + expected = "2:59 AM, Sunday (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00", "saturDay" to return "2:59 AM, Sunday (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05', 'Wednesday')` should return `'12:04 AM, Friday (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later_with_day(self): + actual = time_calculator.add_time("11:59 PM", "24:05", "Wednesday") + expected = "12:04 AM, Friday (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05", "Wednesday" to return "12:04 AM, Friday (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02', 'tuesday')`should return `'6:18 AM, Monday (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration_with_day(self): + actual = time_calculator.add_time("8:16 PM", "466:02", "tuesday") + expected = "6:18 AM, Monday (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02", "tuesday" to return "6:18 AM, Monday (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def add_time(start, duration): + + + + + + return new_time +``` + +# --solutions-- + +```py +def add_time(start, duration, day=''): + start_arr = start[0:-3].split(':') + dur_arr = duration.split(':') + tail = '' + # converting to 24h format + if 'AM' in start: + if start_arr[0] == '12': + start_arr[0] = '00' + elif 'PM' in start: + if start_arr[0] == '12': + start_arr[0] = '12' + else: + start_arr[0] = f'{int(start_arr[0]) + 12}' + + # adding minutes + sum_m = int(start_arr[1]) + int(dur_arr[1]) + if sum_m > 59: + + if (sum_m - 60 * (sum_m//60)) < 10: + mins = f'0{(sum_m - 60 * (sum_m//60))}' + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + + else: + mins = sum_m - 60 * (sum_m//60) + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + else: + if sum_m < 10: + mins = f'0{sum_m}' + else: + mins = sum_m + + #adding hours + sum_h = int(start_arr[0]) + int(dur_arr[0]) + if sum_h < 24: + hours= sum_h + #time_24 = f'{hours}:{mins}' + else: + days_after = sum_h//24 + if days_after == 1: + hours = sum_h - 24 + tail = ' (next day)' + else: + hours = sum_h - 24 * days_after + tail = f' ({days_after} days later)' + + #converting back to AM/PM + if hours == 0: + hours = 12 + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + elif hours < 12: + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + else: + if hours > 12: + hours = hours - 12 + time = f'{hours}:{mins} PM' + final_time = f'{time}{tail}' + + #days of the week + week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] + if day: + day = day.capitalize() + if not tail: + final_time = f'{time}, {day}' + elif tail == ' (next day)': + index = week.index(day) + 1 + if index == 7: + index = 0 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + elif tail: + index = (week.index(day) + days_after) % 7 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + + + print('\n') + print(final_time) + print('\n') + return final_time + +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md new file mode 100644 index 00000000000..4f112fd73c5 --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md @@ -0,0 +1,248 @@ +--- +id: 5e44412c903586ffb414c94c +title: Build an Arithmetic Formatter Project +challengeType: 23 +forumTopicId: 462359 +dashedName: build-an-arithmetic-formatter-project +--- + +# --description-- + +Students in primary school often arrange arithmetic problems vertically to make them easier to solve. For example, "235 + 52" becomes: + +```py + 235 ++ 52 +----- +``` + +Finish the `arithmetic_arranger` function that receives a list of strings which are arithmetic problems, and returns the problems arranged vertically and side-by-side. The function should optionally take a second argument. When the second argument is set to `True`, the answers should be displayed. + +## Example + +Function Call: + +```py +arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"]) +``` + +Output: + +```py + 32 3801 45 123 ++ 698 - 2 + 43 + 49 +----- ------ ---- ----- +``` + +Function Call: + +```py +arithmetic_arranger(["32 + 8", "1 - 3801", "9999 + 9999", "523 - 49"], True) +``` + +Output: + +```py + 32 1 9999 523 ++ 8 - 3801 + 9999 - 49 +---- ------ ------ ----- + 40 -3800 19998 474 +``` + +## Rules + +The function will return the correct conversion if the supplied problems are properly formatted, otherwise, it will **return** a **string** that describes an error that is meaningful to the user. + +- Situations that will return an error: + - If there are **too many problems** supplied to the function. The limit is **five**, anything more will return: `'Error: Too many problems.'` + - The appropriate operators the function will accept are **addition** and **subtraction**. Multiplication and division will return an error. Other operators not mentioned in this bullet point will not need to be tested. The error returned will be: `"Error: Operator must be '+' or '-'."` + - Each number (operand) should only contain digits. Otherwise, the function will return: `'Error: Numbers must only contain digits.'` + - Each operand (aka number on each side of the operator) has a max of four digits in width. Otherwise, the error string returned will be: `'Error: Numbers cannot be more than four digits.'` +- If the user supplied the correct format of problems, the conversion you return will follow these rules: + - There should be a single space between the operator and the longest of the two operands, the operator will be on the same line as the second operand, both operands will be in the same order as provided (the first will be the top one and the second will be the bottom). + - Numbers should be right-aligned. + - There should be four spaces between each problem. + - There should be dashes at the bottom of each problem. The dashes should run along the entire length of each problem individually. (The example above shows what this should look like.) + +# --hints-- + +`arithmetic_arranger(["3801 - 2", "123 + 49"])` should return `3801 123\n- 2 + 49\n------ -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3801 - 2", "123 + 49"]), ' 3801 123\\n- 2 + 49\\n------ -----')`); + } +}) +``` + +`arithmetic_arranger(["1 + 2", "1 - 9380"])` should return `1 1\n+ 2 - 9380\n--- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["1 + 2", "1 - 9380"]), ' 1 1\\n+ 2 - 9380\\n--- ------')`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `3 3801 45 123\n+ 855 - 2 + 43 + 49\n----- ------ ---- -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]), ' 3 3801 45 123\\n+ 855 - 2 + 43 + 49\\n----- ------ ---- -----')`); + } +}) +``` + +`arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"])` should return `11 3801 1 123 1\n+ 4 - 2999 + 2 + 49 - 9380\n---- ------ --- ----- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"]), ' 11 3801 1 123 1\\n+ 4 - 2999 + 2 + 49 - 9380\\n---- ------ --- ----- ------')`); + } +}) +``` + +`arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"])` should return `'Error: Too many problems.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"]), 'Error: Too many problems.')`); + } +}) +``` + +`arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `"Error: Operator must be '+' or '-'."`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Operator must be '+' or '-'.")`); + } +}) +``` + +`arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers cannot be more than four digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers cannot be more than four digits.")`); + } +}) +``` + +`arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers must only contain digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers must only contain digits.")`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "988 + 40"], True)` should return `3 988\n+ 855 + 40\n----- -----\n 858 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "988 + 40"], True), " 3 988\\n+ 855 + 40\\n----- -----\\n 858 1028")`); + } +}) +``` + +`arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True)` should return `32 1 45 123 988\n- 698 - 3801 + 43 + 49 + 40\n----- ------ ---- ----- -----\n -666 -3800 88 172 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True), " 32 1 45 123 988\\n- 698 - 3801 + 43 + 49 + 40\\n----- ------ ---- ----- -----\\n -666 -3800 88 172 1028")`); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def arithmetic_arranger(problems, show_answers=False): + + return problems + +print(f'\n{arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"])}') +``` + +# --solutions-- + +```py +def arithmetic_arranger(problems, result=False): + + lin1 = "" + lin2 = "" + lin3 = "" + lin4 = "" + + if len(problems) > 5: + return 'Error: Too many problems.' + for problem in problems: + [num1, sym, num2] = problem.split() + sign = ['+', '-'] + if sym not in sign: + return ("Error: Operator must be '+' or '-'.") + if len(num1) > 4 or len(num2) > 4: + return ("Error: Numbers cannot be more than four digits.") + if not num1.isnumeric() or not num2.isnumeric(): + return ("Error: Numbers must only contain digits.") + + lin1 += " " + num1 + " " if len(num1) >= len( + num2) else " " * (len(num2) + 2 - len(num1)) + num1 + " " + lin2 += sym + " " + num2 + " " if len(num2) >= len( + num1) else sym + " " * (len(num1) - len(num2) + 1) + num2 + " " + nmax = (len(num1) + 2) if len(num1) >= len(num2) else (len(num2) + 2) + lin3 += "-" * nmax + " " + op = int(num1) + int(num2) if sym == "+" else int(num1) - int(num2) + lin4 += (" " * (nmax - len(str(op)))) + str(op) + " " + + arranged_problems = lin1.rstrip() + "\n" + lin2.rstrip( + ) + "\n" + lin3.rstrip() + if result: + arranged_problems += "\n" + lin4.rstrip() + + return arranged_problems +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md index 301673ab855..60436eb447c 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md @@ -23,7 +23,7 @@ Add a new key-value pair to your dictionary. Use the string `species` as the key You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 1 `)) }) @@ -32,7 +32,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have a `species` key with the value `guinea pig` inside your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig"} `)) }) diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md index 41a68b32c4c..41cb6ca82c6 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md @@ -14,7 +14,7 @@ Now, replace the existent keys with the strings `A` and `B` — one for each nod Your dictionary should have an `A` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "A" in my_graph `)) }) @@ -23,7 +23,7 @@ Your dictionary should have an `A` key. Your `A` key should have `B` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -32,7 +32,7 @@ Your `A` key should have `B` as the value. Your dictionary should have an `B` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "B" in my_graph `)) }) @@ -41,7 +41,7 @@ Your dictionary should have an `B` key. Your `B` key should have `A` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["B"] == "A" `)) }) @@ -50,7 +50,7 @@ Your `B` key should have `A` as the value. Your dictionary should have two keys. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph) == 2 `)) }) diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md index 74afa0d8c83..954db103e23 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md @@ -16,7 +16,7 @@ Modify your existing dictionary to represent this arrangement. Use a list to rep Your dictionary should have 3 keys — `A`, `B`, and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C"] len(my_graph) == 3 and all(key in my_graph for key in key_list) `)) @@ -26,7 +26,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["A"]` should have the `B` node as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -35,7 +35,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -44,7 +44,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. The value of `my_graph["B"]` should be a list containing the other two nodes. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -53,7 +53,7 @@ The value of `my_graph["B"]` should be a list containing the other two nodes. The value of `my_graph["C"]` should be the connected node. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["C"] == "B" `)) }) diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md index b1f958c33de..26ce8d5c3e3 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md @@ -14,7 +14,7 @@ Add one last node, `D`, which is connected with `A` and `C`. Modify your diction Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -24,7 +24,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list `)) }) @@ -33,7 +33,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["A"]) == 2 and "B" in my_graph["A"] and "D" in my_graph["A"] `)) }) @@ -42,7 +42,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -51,7 +51,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -60,7 +60,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list `)) }) @@ -69,7 +69,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["C"]) == 2 and "B" in my_graph["C"] and "D" in my_graph["C"] `)) }) @@ -78,7 +78,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list `)) }) @@ -87,7 +87,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["D"]) == 2 and "A" in my_graph["D"] and "C" in my_graph["D"] `)) }) diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md index 3717e8c2e9a..f546cc1ee2f 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md @@ -27,7 +27,7 @@ Modify `my_graph["A"]` into a list of tuples, considering the following distance Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -37,7 +37,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list and all(type(i) is tuple for i in my_graph["A"]) `)) }) @@ -46,7 +46,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 3), ("D", 1)] len(my_graph["A"]) == 2 and all(t in my_graph["A"] for t in tuples) `)) diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md index 2cccc3f7a67..383cf9e65cb 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md @@ -16,7 +16,7 @@ Declare an empty function called `shortest_path` and don't forget the `pass` key You should have a `shortest_path` function. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect inspect.isfunction(shortest_path) `)) diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md index 6855d6198bf..8916491d879 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md @@ -16,7 +16,7 @@ For that your function needs two parameters: `graph`, and `start`. Add them to y Your function should accept `graph` and `start` as the parameters, in this order. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == '(graph, start)' diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md index 94cafce7be0..16bfa6e5b73 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md @@ -22,7 +22,7 @@ Your function should take three parameters:`graph`, `start`, and `target`. The o The `target` parameter should have the default value of an empty string. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == "(graph, start, target='')" diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md index 6f31860dc95..f436e8b4a59 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md @@ -14,7 +14,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list and all(type(i) is tuple for i in my_graph["B"]) `)) }) @@ -23,7 +23,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 3), ("C", 4)] len(my_graph["B"]) == 2 and all(t in my_graph["B"] for t in tuples) `)) diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md index 2c74bcf173b..10498b7c0d6 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md @@ -14,7 +14,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list and all(type(i) is tuple for i in my_graph["C"]) `)) }) @@ -23,7 +23,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 4), ("D", 7)] len(my_graph["C"]) == 2 and all(t in my_graph["C"] for t in tuples) `)) @@ -33,7 +33,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list and all(type(i) is tuple for i in my_graph["D"]) `)) }) @@ -42,7 +42,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 1), ("C", 7)] len(my_graph["D"]) == 2 and all(t in my_graph["D"] for t in tuples) `)) diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md index f85cbefa382..f09e53db245 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md @@ -25,7 +25,7 @@ Now, you are going to test your function with another graph. Change `my_graph` i You should modify `my_graph` into the provided graph. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` g = { 'A': [('B', 5), ('C', 3), ('E', 11)], 'B': [('A', 5), ('C', 1), ('F', 2)], diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md index 8d332fd8377..d668861aa4e 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md @@ -27,7 +27,7 @@ You should have a variable called `copper`. Your `copper` variable should have the value of an empty dictionary. Use a pair of curly braces for that. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {} `)) }) diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md index 42bb33f59f9..5321fbebf6e 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md @@ -16,7 +16,7 @@ Add another key `age` to your dictionary and give it the integer number `2` as v You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 2 `)) }) @@ -25,7 +25,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have an `age` key with the value `2` just after `'species': 'guinea pig'`, inside your `copper` dictionary. Don't forget the comma. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md index c6e1ab81491..097c916bc90 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md @@ -25,7 +25,7 @@ After your dictionary, follow the example above to access the `species` key of ` You should not modify your dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md index 8e0abf3eb69..ddfc7c28bda 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md @@ -24,7 +24,7 @@ You should rename your `copper` dictionary into `my_graph`. Your `my_graph` variable should be a dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph) is dict `)) }) diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md index c76c7eaface..1459ffe6d51 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md @@ -16,7 +16,7 @@ Your `merge_sort` function should take a single parameter: `array`. ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('merge_sort'))) == '(array)' + str(inspect.signature(merge_sort)) == '(array)' `)) }) ``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md index ff96993fd9d..e69cba8b0e6 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md @@ -19,13 +19,9 @@ You should create an `if` statement to check if `len(array) <= 1`. Don't forget ```js ({ - test: () => { - const transformedCode = code.replace(/\r/g, ""); - const merge_sort = __helpers.python.getDef("\n" + transformedCode, "merge_sort"); - const { function_body } = merge_sort; - - assert.match(function_body, /if\s+len\(\s*array\s*\)\s*<=\s*1:\s*pass/); - } + test: () => assert(runPython(` + _Node(_code).find_function("merge_sort").find_ifs()[0].find_conditions()[0].is_equivalent("len(array) <= 1") + `)) }) ``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md index 27e7b719b8e..6e418beec4f 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md @@ -22,13 +22,11 @@ Use the `pass` keyword in the body of the `if` statement. Your `if` statement should check if `__name__` has a value of `'__main__'` ```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:/); -``` - -You should have the `pass` keyword in the body of your `if` statement - -```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:\s*[^}]*\bpass\b/); +({ + test: () => assert(runPython(` + _Node(_code).find_ifs()[0].find_conditions()[0].is_equivalent("__name__ == '__main__'") + `)) +}) ``` # --seed-- diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md index 61571645ae7..463c79ae317 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md @@ -25,7 +25,6 @@ Your `rods` variable should be an empty dictionary. ```js ({ test: () => assert(runPython(` - rods = __locals.get("rods") rods == {} `)) }) diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md index 7e8afff8a8c..22086bee39a 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md @@ -19,8 +19,7 @@ You should use the `range()` function to assign a sequence of numbers to `rods[' ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - type(a['A']) is range + type(rods['A']) is range `)) }) ``` @@ -29,8 +28,7 @@ You should use the `range()` function to assign the sequence of numbers from `3` ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == range(3, 0, -1) + rods['A'] == range(3, 0, -1) `)) }) ``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md index 0f200237c7c..c088f4fef5a 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md @@ -17,8 +17,7 @@ You should pass your `range()` call to the `list()` function. ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == list(range(3, 0, -1)) + rods['A'] == list(range(3, 0, -1)) `)) }) ``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md index 48c259a240c..69bc2e29dbe 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md @@ -23,7 +23,7 @@ You should declare an empty function named `move`. Remember to use the `pass` ke ({ test: () => { assert(runPython(` import inspect - inspect.isfunction(__locals.get('move')) + inspect.isfunction(move) `)) } }) diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md index 7977e87a39f..c5a3264c404 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md @@ -23,9 +23,8 @@ The value of `number_of_moves` should be the expression to calculate the number ```js ({ test: () => { - assert(runPython(` - a = __locals.get('NUMBER_OF_DISKS') - __locals.get('number_of_moves') == 2**a -1 + assert(runPython(` + number_of_moves == 2**NUMBER_OF_DISKS -1 `)) } }) ``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md index 5549eec0a74..8e4c36f8d99 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md @@ -16,7 +16,7 @@ You should declare an empty function named `make_allowed_move`. Remember to use ```js ({ test: () => assert(runPython(` import inspect - inspect.isfunction(__locals.get('make_allowed_move')) + inspect.isfunction(make_allowed_move) `)) }) ``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md index e5356a11ce6..1bce70008c9 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md @@ -16,7 +16,7 @@ Your `make_allowed_move()` function should have two parameters named `rod1` and ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('make_allowed_move'))) == '(rod1, rod2)' + str(inspect.signature(make_allowed_move)) == '(rod1, rod2)' `)) }) ``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md index 94754f0bc4d..50c98141ec6 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md @@ -14,16 +14,14 @@ The `rods` dictionary will represent the three rods with their disks. Give it th Your `rods` dictionary should have an `'A'` key. ```js -({ test: () => assert(runPython(`'A' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'A' in rods`)) }) ``` `rods['A']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['A'] == [] + rods['A'] == [] `)) }) ``` @@ -31,16 +29,14 @@ Your `rods` dictionary should have an `'A'` key. Your `rods` dictionary should have a `'B'` key. ```js -({ test: () => assert(runPython(`'B' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'B' in rods`)) }) ``` `rods['B']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['B'] == [] + rods['B'] == [] `)) }) ``` @@ -48,16 +44,14 @@ Your `rods` dictionary should have a `'B'` key. Your `rods` dictionary should have a `'C'` key. ```js -({ test: () => assert(runPython(`'C' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'C' in rods`)) }) ``` `rods['C']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['C'] == [] + rods['C'] == [] `)) }) ``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md index f6d703f3d23..7c3b31b7039 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md @@ -22,7 +22,7 @@ Your `move()` function should have `n`, `source`, `auxiliary`, and `target` as t ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('move'))) == '(n, source, auxiliary, target)' + str(inspect.signature(move)) == '(n, source, auxiliary, target)' `)) }) ``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md index 06d2560a1d1..abb09e1392c 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md @@ -17,9 +17,8 @@ You should reduce the indentation level of all the code after the `return` state ```js ({ test: () => assert(runPython(` - hanoi = __locals.get("move") a, b, c = [3, 2, 1], [], [] - hanoi(3, a, b, c) + move(3, a, b, c) a == [] and b == [] and c == [3, 2, 1] `)) }) diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md index 16e7b5b68ed..00efcbb8726 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md @@ -23,9 +23,8 @@ You should add `direction` as the third parameter of your function. ```js ({ test: () => assert(runPython(` - import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + import inspect + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction)' `)) }) diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md index 74562ae26a5..d19dc6dbe27 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md @@ -24,8 +24,7 @@ You should declare a new function called `encrypt`. Remember to use the `pass` k ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - inspect.isfunction(f) + inspect.isfunction(encrypt) `)) }) ``` @@ -35,8 +34,7 @@ Your `encrypt` function should take `message` and `key` as the parameters. The o ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - sig = inspect.signature(f) + sig = inspect.signature(encrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md index fa091717efb..b7357c63760 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md @@ -16,8 +16,7 @@ You should define a new function called `decrypt`. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - inspect.isfunction(f) + inspect.isfunction(decrypt) `)) }) ``` @@ -27,8 +26,7 @@ Your `decrypt` function should take `message` and `key` as the parameters. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - sig = inspect.signature(f) + sig = inspect.signature(decrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md index 19fcb7ee6a3..f719d77790e 100644 --- a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md @@ -23,8 +23,7 @@ The `direction` parameter of your `vigenere` function should have a default valu ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction=1)' `)) }) diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md new file mode 100644 index 00000000000..733f024fa29 --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md @@ -0,0 +1,39 @@ +--- +id: 65ef181dad3d96b14a21a03e +title: Step 1 +challengeType: 20 +dashedName: step-1 +--- + +# --description-- + +In this project, you will find the approximate square root of a given number using the bisection method. + +The bisection method is a technique for finding the roots of a real-valued function. It works by narrowing down an interval where the square root lies until it converges to a value within a specified tolerance. + +Begin by creating a function named `square_root_bisection`. Leave the parameters empty for now. + +# --hints-- + +You should define the function `square_root_bisection` with no parameters. + +```js +({ + test: () => { + assert(runPython(` + import inspect + inspect.isfunction(square_root_bisection) + `)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md new file mode 100644 index 00000000000..f5091e5a2c6 --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md @@ -0,0 +1,38 @@ +--- +id: 65ef190c6b51e9b5a5f7ed29 +title: Step 2 +challengeType: 20 +dashedName: step-2 +--- + +# --description-- + +Give the `square_root_bisection` method the following parameters: + +- `square_target`: The number for which you want to find the square root. +- `tolerance` (optional): The acceptable difference between the square of the approximate root value and the actual target value (default is `1e-7`). The tolerance `1e-7` implies that the solution will be accurate to within `0.0000001` of the true value and is a good default choice that balances accuracy and performance. +- `max_iterations` (optional): The maximum number of iterations to perform (default is `100`). If the method doesn't converge within this limit, you'll assume the solution is not found. + +# --hints-- + +Your function should have these parameters: `square_target`, `tolerance = 1e-7`, and `max_iterations = 100`. The order matters. + +```js +({ + test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").has_args("square_target, tolerance=1e-7, max_iterations=100")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py + +--fcc-editable-region-- +def square_root_bisection(): + pass +--fcc-editable-region-- + +``` + diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md new file mode 100644 index 00000000000..77628582774 --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md @@ -0,0 +1,46 @@ +--- +id: 65ef19425d1b27b6c930bae6 +title: Step 3 +challengeType: 20 +dashedName: step-3 +--- + +# --description-- + +If the number for which you want to find the square root is negative, the code should raise an error as the square root of a negative number is not defined in real numbers. + +Remove the `pass` statement and create an `if` statement to check if `square_target` is less than `0`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").has_pass()`)) + } +}) +``` + +You should create an `if` statement to check if `square_target < 0`. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_if("square_target < 0").is_empty()`)) + + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance = 1e-7, max_iterations = 100): + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md new file mode 100644 index 00000000000..20f407dfd2a --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md @@ -0,0 +1,46 @@ +--- +id: 65ef198fde24dfb7ff675b42 +title: Step 4 +challengeType: 20 +dashedName: step-4 +--- + +# --description-- + +If the `square_target` is less than `0`, raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'`. Don't forget to remove the `pass` keyword. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'` inside the `if` body. + +```js +({ + test: () => { + + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].is_equivalent("raise ValueError('Square root of negative number is not defined in real numbers')")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md new file mode 100644 index 00000000000..f31f83a0ed3 --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md @@ -0,0 +1,38 @@ +--- +id: 65ef19ec318e2fb9066381e3 +title: Step 5 +challengeType: 20 +dashedName: step-5 +--- + +# --description-- + +You'll create separate cases for when `square_target` is `0` or `1`. + +Begin by creating an `if` statement to check if `square_target` is equal to `1`. + +# --hints-- + +You should create an `if` statement to check that `square_target == 1`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[0].is_equivalent("square_target == 1")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md new file mode 100644 index 00000000000..927a215705a --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md @@ -0,0 +1,51 @@ +--- +id: 65ef1a1fcb527bba0ca82ccf +title: Step 6 +challengeType: 20 +dashedName: step-6 +--- + +# --description-- + +If the `square_target` is equal to `1`, declare a variable `root` and assign it the value `1` . Also, print the message `'The square root of {square_target} is 1'`. Remember to format the message using an f-string. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should assign the value `1` to the `root` variable and print the message `'The square root of {square_target} is 1'` inside the `if` body. + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].is_equivalent("root = 1\\nprint(f'The square root of {square_target} is 1')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md new file mode 100644 index 00000000000..9ba5f5b573f --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md @@ -0,0 +1,55 @@ +--- +id: 65ef1a50049cf9bada13266f +title: Step 7 +challengeType: 20 +dashedName: step-7 +--- + +# --description-- + +Create an `elif` statement to check if `square_target` is equal to `0`. If it is, assign the value `0` to the `root` variable. Also, print the message `'The square root of {square_target} is 0'`. Remember to format the message using an f-string. + +# --hints-- + +You should have an `elif` statement to check the condition `square_target == 0`. + + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[1].is_equivalent("square_target == 0")`)); + } +}) + +``` + +You should assign the value `0` to the `root` variable and pass the argument `f'The square root of {square_target} is 0'` to a `print` call. + + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[1].is_equivalent("root = 0\\nprint(f'The square root of {square_target} is 0')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md new file mode 100644 index 00000000000..0fb10817783 --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md @@ -0,0 +1,45 @@ +--- +id: 65ef1a720d6e65bbb0d22463 +title: Step 8 +challengeType: 20 +dashedName: step-8 +--- + +# --description-- +Next, you are going to work on the cases where the `square_target` is a positive number apart from `1` or `0`. + +Create an `else` clause to handle these cases. + +# --hints-- + +Create an `else` clause and do not forget to add a `pass` keyword. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[2] == _Node()`)) + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md new file mode 100644 index 00000000000..8f10c9990f1 --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md @@ -0,0 +1,73 @@ +--- +id: 65ef1aacca094bbcc2e2a3c8 +title: Step 9 +challengeType: 20 +dashedName: step-9 +--- + +# --description-- + +In Python, the `max()` function returns the largest of the input values. + +```python +max(1, 2, 3) # Output: 3 +``` + +The variables `low` and `high` will be used to define the initial interval where the square root lies. + +Inside the `else` clause, initialize the `low` variable to `0` and the `high` variable to be the maximum of either `1` or `square_target` as the square root of a number is always less than or equal to the number itself. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].has_pass()`)) + } +}) +``` + +You should declare a variable `low` and assign it `0`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("low").is_equivalent("low = 0")`)); } +}) + +``` + +You should declare a variable `high` and use the `max()` function to assign it the maximum value between `1` and `square_target`. + +```js + +({ test: () => assert(runPython(` +node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("high") +values = ["high = max(1, square_target)", "high = max(square_target, 1)"] +any(node.is_equivalent(val) for val in values) +`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md new file mode 100644 index 00000000000..6711973a758 --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md @@ -0,0 +1,46 @@ +--- +id: 65ef1afca9a8f6be0d4150ba +title: Step 10 +challengeType: 20 +dashedName: step-10 +--- + +# --description-- + +Set the value of `root` to `None` as at this point, you don't have an approximate value yet. + +# --hints-- + +The value of `root` should be `None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].is_equivalent("low = 0\\nhigh = max(1, square_target)\\nroot = None")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + low = 0 + high = max(1, square_target) + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md new file mode 100644 index 00000000000..69406d9fee2 --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md @@ -0,0 +1,51 @@ +--- +id: 65ef1be2b958cabf712296cd +title: Step 11 +challengeType: 20 +dashedName: step-11 +--- + +# --description-- + +Now you'll repeatedly narrow down the interval by finding the midpoint of the current interval and comparing the square of the midpoint with the target value. + +For that, inside the `else` block, create a `for` loop that runs up to `max_iterations` times. + +# --hints-- + +You should create a `for` loop to iterate over `range(max_iterations)`. Use `_` as the loop variable. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].is_equivalent("for _ in range(max_iterations):\\n pass")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md new file mode 100644 index 00000000000..e5efb88bafc --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md @@ -0,0 +1,78 @@ +--- +id: 65ef1c0a03fcabc04ded7e69 +title: Step 12 +challengeType: 20 +dashedName: step-12 +--- + +# --description-- + +Inside the for loop, calculate the midpoint of the interval ranging from `low` to `high`. Assign this value to a variable `mid`. + +Also, calculate the square of the midpoint (`mid`) and store it in the variable `square_mid`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].has_pass()`)) + + } + +}) + +``` + +You should declare a variable `mid` and assign it `(low + high) / 2` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(` + node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("mid") + values = ["mid = (low + high) / 2", "mid = (high + low) / 2"] + any(node.is_equivalent(val) for val in values) + `)) + + } + +}) +``` + +You should declare a variable `square_mid` and assign it `mid**2` inside the body of the for loop. + +```js +({ test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("square_mid").is_equivalent("square_mid = mid**2")`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md new file mode 100644 index 00000000000..f365f00475d --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md @@ -0,0 +1,53 @@ +--- +id: 65ef1c34a541afc12dbb849d +title: Step 13 +challengeType: 20 +dashedName: step-13 +--- + +# --description-- + +The `abs()` function returns the absolute value of a number, which is always positive, regardless of the number sign. You will use it to check that the estimated square root is close enough to the actual value. + +Now, create an `if` statement to check if the absolute value of the difference between `square_mid` and `square_target` is within the specified `tolerance`. + +# --hints-- + +You should have an `if` statement with the condition `abs(square_mid - square_target) < tolerance:` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[0].is_equivalent("abs(square_mid - square_target) < tolerance")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md new file mode 100644 index 00000000000..7c84ec9d7fe --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md @@ -0,0 +1,68 @@ +--- +id: 65ef1cb031de30c2cde64c12 +title: Step 14 +challengeType: 20 +dashedName: step-14 +--- + +# --description-- + +If the difference is within the specified `tolerance`, set the value of `root` to `mid` and break out of the loop. + +# --hints-- + +You should remove the existing `pass` statement. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].has_pass()`)) + } + +}) + +``` + +You should assign the value of `mid` to `root` and break out of the loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].is_equivalent("root = mid\\nbreak")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md new file mode 100644 index 00000000000..18a6767deab --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md @@ -0,0 +1,71 @@ +--- +id: 65ef1cda150a59c3b8306944 +title: Step 15 +challengeType: 20 +dashedName: step-15 +--- + +# --description-- + +If the difference is not within the specified `tolerance`, create an `elif` statement to check if `square_mid` is less than `square_target`. + +Assign the value of `mid` to `low` as the square root would now lie between `low` and `mid`. + +# --hints-- + +You should create an `elif` statement that checks if `square_mid < square_target`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[1].is_equivalent("square_mid < square_target")`)) + + } + +}) +``` + +You should assign the value of `mid` to `low`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[1].is_equivalent("low = mid")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md new file mode 100644 index 00000000000..06598491f2e --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md @@ -0,0 +1,70 @@ +--- +id: 65ef1d104c2be9c4d8e22075 +title: Step 16 +challengeType: 20 +dashedName: step-16 +--- + +# --description-- + +If both the `if` and `elif` conditions are not met, the value of `mid` would be greater than `square_target`. In this case, create an `else` clause and assign the value of `mid` to `high`. + +# --hints-- + +You should have an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[2]== _Node()`)); + } +}) + +``` + +You should assign the value of `mid` to `high` in the `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[2].is_equivalent("high = mid")`)); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- + elif square_mid < square_target: + low = mid + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md new file mode 100644 index 00000000000..45e3e9987a8 --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md @@ -0,0 +1,76 @@ +--- +id: 65ef1d5e3d2927c5e0f4997b +title: Step 17 +challengeType: 20 +dashedName: step-17 +--- + +# --description-- + +Outside the for loop, create an `if` statement to check if the value of `root` is still `None`. If it is, print the message `'Failed to converge within {max_iterations} iterations.'`. Remember to format the message using an f-string. + +# --hints-- + +You should create an `if` statement that checks if `root is None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[0].is_equivalent("root is None")`)); + + } +}) +``` + +You should pass the argument `f'Failed to converge within {max_iterations} iterations.'` to the `print` function. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].is_equivalent("if root is None:\\n print(f'Failed to converge within {max_iterations} iterations.')")`)); + + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md new file mode 100644 index 00000000000..ffe75554dd8 --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md @@ -0,0 +1,77 @@ +--- +id: 65ef1d924ff2e5c7031c6ce8 +title: Step 18 +challengeType: 20 +dashedName: step-18 +--- + +# --description-- + +Create an `else` clause to handle the case where the value of `root` is not `None`, indicating that a root hass been found. If it is not `None`, print the message `'The square root of {square_target} is approximately {root}'`. Remember to format using an f-string. + +# --hints-- + +You should create an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[1] == _Node()`)); + } +}) + +``` + +You should print `f'The square root of {square_target} is approximately {root}'` within the `else` body. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_bodies()[1].is_equivalent("print(f'The square root of {square_target} is approximately {root}')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md new file mode 100644 index 00000000000..1a2bb01cf56 --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md @@ -0,0 +1,68 @@ +--- +id: 65ef1dd722f6e7c8294eeec4 +title: Step 19 +challengeType: 20 +dashedName: step-19 +--- + +# --description-- + +Finally, return the value of `root` from the `square_root_bisection` function. + +# --hints-- + +You should return `root` at the end of the function. + +```js +({ + test: () => + { + const pyClassStr = runPython(`str(_Node(_code).find_function("square_root_bisection"))`); + assert.match(pyClassStr, /return\s*root/) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md new file mode 100644 index 00000000000..7904b9bceab --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md @@ -0,0 +1,70 @@ +--- +id: 65ef1e10268f8ec9121446d1 +title: Step 20 +challengeType: 20 +dashedName: step-20 +--- + +# --description-- + +Outside the function definiton, create a variable `N` and assign the value of `16` to it. + +# --hints-- + +You should have the variable `N = 16` outside the function definition. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_variable("N").is_equivalent("N = 16")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md new file mode 100644 index 00000000000..71da1b62c03 --- /dev/null +++ b/curriculum/challenges/espanol/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md @@ -0,0 +1,115 @@ +--- +id: 65ef1eac497754cafa12a26c +title: Step 21 +challengeType: 20 +dashedName: step-21 +--- + +# --description-- + +Call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +Experiment with larger values. + +With this, you have successfully implemented the bisection method to find the square root of a number. + +# --hints-- + +You should call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +```js +({ + test: () => assert(runPython(`_Node(_code).has_call("square_root_bisection(N)")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- +N = 16 + +--fcc-editable-region-- + +``` + +# --solutions-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +N = 16 +square_root_bisection(N) +``` diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md index 55741e585f5..5e7c3098c6a 100644 --- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md +++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md @@ -7,7 +7,7 @@ dashedName: step-8 # --description-- -To see the `cat-head` element, give it a linear gradient background with `#5e5e5e` at `85%` and `#45454f` at `100%`. +To see the `.cat-head` element, give it a linear gradient background with `#5e5e5e` at `85%` and `#45454f` at `100%`. You might not notice the difference between these two colors, but they are there. diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md index 542d563c9a4..1bdfc253c22 100644 --- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md +++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md @@ -11,7 +11,7 @@ Inside your `.cat-ears` element, create two `div` elements with the classes `cat # --hints-- -You should not change the existing `div` element with the class `car-ears`. +You should not change the existing `div` element with the class `cat-ears`. ```js assert(document.querySelectorAll('div.cat-ears').length === 1); diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md index 02c8f76968f..0bcf050c9dd 100644 --- a/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md +++ b/curriculum/challenges/espanol/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md @@ -11,7 +11,7 @@ The last position property value is `sticky`. `sticky` positioning is a hybrid o Change the value of the `position` property of `.cat-head` to `sticky`, set `top` to `0`, then remove `left` and its value. -**Note**: To see how `sticky` works, you have to place a couple of texts before and after your `.cat-head` `div` element. If you scroll up after that, you'll see that the `.cat-head` gets stuck to the top and remains there. +**Note**: To see how `sticky` works, you have to place a couple of texts before and after your `.cat-head` `div` element. If you scroll down after that, you'll see that the `.cat-head` gets stuck to the top and remains there. # --hints-- diff --git a/curriculum/challenges/espanol/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md b/curriculum/challenges/espanol/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md index 0f93285cb97..5f212983dbc 100644 --- a/curriculum/challenges/espanol/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md +++ b/curriculum/challenges/espanol/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md @@ -61,7 +61,7 @@ while (continueLoop) { --fcc-editable-region-- --fcc-editable-region-- -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/espanol/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md b/curriculum/challenges/espanol/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md index bf40abef119..3f935935d65 100644 --- a/curriculum/challenges/espanol/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md +++ b/curriculum/challenges/espanol/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md @@ -44,7 +44,7 @@ let done = 0; while (continueLoop) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/espanol/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md b/curriculum/challenges/espanol/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md index 9c976287a58..38f1716a030 100644 --- a/curriculum/challenges/espanol/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md +++ b/curriculum/challenges/espanol/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md @@ -48,7 +48,7 @@ let done = 0; while (done !== count) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/espanol/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md b/curriculum/challenges/espanol/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md index 2d7fdd370c3..a8f81b64a7d 100644 --- a/curriculum/challenges/espanol/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md +++ b/curriculum/challenges/espanol/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md @@ -23,15 +23,7 @@ Test value of `__name__` ```js ({ - test: () => assert(__pyodide.runPython(`__name__ == '__main__'`)) -}) -``` - -Test __locals and __pyodide - -```js -({ - test: () => assert(__pyodide.runPython(`__locals.get('add')(4,5) == 9`)) + test: () => assert(runPython(`__name__ == '__main__'`)) }) ``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md index d2139487de3..de4fa3e7ee3 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md @@ -1,6 +1,5 @@ --- id: 658111239f39a01c8f095c44 -videoId: nLDychdBwUg title: "Dialogue 1: What Motivates the Team?" challengeType: 21 dashedName: dialogue-1-what-motivates-the-team @@ -13,3 +12,275 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Maria", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.5, + "dialogue": { + "text": "Hey Maria, I have a question… Do you know what motivates the team?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 4.9, + "finishTime": 7.4, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 8.7, + "finishTime": 12.3, + "dialogue": { + "text": "Hi Brian! Well, one thing that really motivates me is learning new things.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 12.7, + "finishTime": 16, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 16.5, + "finishTime": 18.2, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 19.7, + "finishTime": 20.9, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 21.3, + "finishTime": 24.7, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 25, + "finishTime": 27.2, + "dialogue": { + "text": "But you know what demotivates me sometimes?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 27.7, + "finishTime": 32.6, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 33.1, + "finishTime": 37.3, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 37.7, + "finishTime": 39.7, + "dialogue": { + "text": "Well, collaborating with our creative team", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 39.7, + "finishTime": 42.5, + "dialogue": { + "text": "and brainstorming many ideas really inspires me.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 42.8, + "finishTime": 44.6, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 45.5, + "finishTime": 49, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 49.3, + "finishTime": 53.6, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 54, + "finishTime": 55.5, + "dialogue": { + "text": "It is really frustrating.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 56.5, + "finishTime": 58.4, + "dialogue": { + "text": "Yeah, technical glitches are complicated", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 58.4, + "finishTime": 61, + "dialogue": { + "text": "and there's not much we can do other than try to solve them.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 62, + "finishTime": 63.3, + "dialogue": { + "text": "But do you know what else is great?", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 63.7, + "finishTime": 66.7, + "dialogue": { + "text": "Seeing the team's enthusiasm after solving these issues.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 67.1, + "finishTime": 69.8, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 71.3, + "finishTime": 75.4, + "dialogue": { + "text": "Yeah. Wow. You know what? This was really a motivating talk.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 75.7, + "finishTime": 77.1, + "dialogue": { + "text": "Thanks for sharing your thoughts.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 77.7, + "finishTime": 79.8, + "dialogue": { + "text": "Anytime. It's good to have these discussions.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 80, + "finishTime": 81.6, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "right" + } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 82.1 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 82.6 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md index 5eb9cbab87f..bd40d89ce39 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-6 --- - + # --description-- @@ -18,7 +15,7 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ## --sentence-- -`Well, one thing that really motivates me is _ new things.` +`Hi, Brian. Well, one thing that really motivates me is _ new things.` ## --blanks-- @@ -27,3 +24,47 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ### --feedback-- This word is a gerund, the `-ing` form of the verb used as a noun, indicating the action or process of gaining knowledge. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md index 57d5a2b1a4d..279e2861a88 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-5 --- - + # --description-- @@ -20,7 +17,7 @@ When you add an `s` at the end of a word, like `things`, it means you are talkin ## --sentence-- -`Hi Brian! _, one _ that really motivates me _ learning new _.` +`Hi, Brian! _, one _ that really motivates me _ learning new _.` ## --blanks-- @@ -53,3 +50,47 @@ This is the verb `to be` conjugated in the third person singular. ### --feedback-- Maria uses this word to talk about more than one item or idea she likes to learn. It is the plural form of `thing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md index eee61930dcc..3ecb0ccb702 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-7 --- - + # --description-- @@ -51,3 +48,47 @@ learning new things ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md index 053ae896f0b..80d98bbbc33 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-8 --- - + # --description-- @@ -37,3 +34,47 @@ This word is a gerund describing the activity Maria enjoys related to discoverin ### --feedback-- Another gerund that follows `and`, indicating another activity Maria enjoys, which is about getting better at something. It also ends in `-ing` and serves as a noun. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 15.04 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.28, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.78 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md index fbe4dcc505d..cfa8469782b 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-10 --- - + # --description-- @@ -26,7 +23,7 @@ In `I love exploring many new technologies`, how is `exploring` used? ## --answers-- -As a present continuous +As a verb in the present continuous structure ### --feedback-- @@ -34,7 +31,7 @@ Present continuous are for actions happening now. This is not showing an action --- -As a simple present verb +As a verb in the simple present structure ### --feedback-- @@ -42,11 +39,11 @@ Simple present verbs don't end in `-ing`. --- -As a gerund +As a verb in the gerund form --- -As a past participle +As a verb in the past participle form ### --feedback-- @@ -55,3 +52,47 @@ Past participles are for perfect tenses or as adjectives. This is not used like ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 6.50, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills. It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 7.00 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md index 80690caccd2..252cf48c05b 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-18 --- - + # --description-- @@ -31,3 +28,47 @@ Adding a prefix to a word can change its meaning. ### --feedback-- Maria uses an adjective ending in `-ing` to describe a feeling that is the opposite of `motivating`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 32.22, + "finishTimestamp": 36.08 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.86, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.36 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md index 9001228085f..2ea50eff48d 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-11 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to the audio and complete the sentence. ### --feedback-- This word is used when someone listens to what another person says. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 19.86 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 2.68 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md index f00bebea879..042955730aa 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-12 --- - + # --description-- @@ -49,3 +46,47 @@ This word means to develop or become bigger or more advanced. It ends with `-ing ### --feedback-- This word is related to work or a career. It describes doing something in a way that shows good skills and behavior at a job. it ends with `-ly` + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 20.28, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md index 885332a3dfc..008035b84e7 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-13 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on how skill improvement fits into overall personal and professional dev ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.98, + "dialogue": { + "text": "That's great to hear, Maria. Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.48 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md index a99fd602832..e087041f3d9 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-14 --- - + # --description-- @@ -53,3 +50,65 @@ He's adding to the conversation, not changing the topic. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 26.26 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 2.60, + "finishTime": 5.64, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot,", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 6.02, + "finishTime": 8.58, + "dialogue": { + "text": "but you know what demotivates me sometimes?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 9.08 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md index 0bcef38811f..ed340f1a31c 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md @@ -28,4 +28,48 @@ Listen to the audio and complete the sentence. ### --feedback-- -This word means feeling very happy and eager. +This word means feeling very happy and eager. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 15.32, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.94, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.44 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md index b425e084763..cf6dcc31710 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-16 --- - + # --description-- @@ -55,3 +52,47 @@ This phrase means having plenty of time, which is different from what Brian mean ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md index b5708ac00fe..8de15f47d1c 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-17 --- - + # --description-- @@ -47,3 +44,47 @@ This word is a preposition used to compare or illustrate a similarity to somethi ### --feedback-- It means you are doing something quickly because you do not have much time. It ends with `-ing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md index 5293029060e..f74bac67a8c 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-20 --- + + # --description-- The word `brainstorming` refers to a group discussion to produce ideas and solve problems. @@ -46,3 +48,47 @@ It means adhering to specific instructions, which is not the same as the word. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md index ea82aef1538..1b4aea4a2b1 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-28 --- - + # --description-- @@ -18,7 +15,7 @@ The phrase `slow down` means to decrease in speed or reduce the rate of progress ## --sentence-- -`The problem is encountering many technical issues that make our progress _ _.` +`The problem is encountering many technical issues that _ our progress _.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to describe a decrease in speed or pace. ### --feedback-- This adverb complements the phrase to indicate a reduction or decrease in intensity, speed, or amount. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md index ed1c423927b..bd8c7fa6444 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-32 --- + + # --description-- The phrase `other than` indicates the presence of an alternative or different option. @@ -46,3 +48,47 @@ It means the singular or exclusive option, which is not the same as the phrase. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md index d2a4201ca63..9712d6a3279 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-35 --- - + # --description-- @@ -43,3 +40,47 @@ This possessive adjective is used to refer to something that belongs to the pers ### --feedback-- This noun refers to the reason or reasons one has for acting or behaving in a particular way. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 66.12, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 3.68, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.18 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md index 8f432d36f95..c5b54c0b913 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-38 --- - + # --description-- @@ -29,3 +26,47 @@ In the dialogue, Maria talks about the importance of discussions to help them re ### --feedback-- This verb is used to make someone think of something they might have forgotten. It brings something back into someone's mind. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 76.52, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.08, + "dialogue": { + "text": "Anytime. It's good to have these discussions. It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.58 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md index ba9e43efcb6..974459e9326 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-39 --- - + # --description-- @@ -43,3 +40,47 @@ This pronoun refers to the speaker and at least one other person, indicating a c ### --feedback-- This word is used in the context of continuing forward or persevering in a particular action or state. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 79.06, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.54, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.04 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md index 2f8c34f4dbf..c1b55b444af 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md @@ -1,6 +1,5 @@ --- id: 658160772584ba319849f910 -videoId: nLDychdBwUg title: "Dialogue 2: Asking How Someone Feels" challengeType: 21 dashedName: dialogue-2-asking-how-someone-feels @@ -13,3 +12,239 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Alice", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Tom", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Alice", + "startTime": 2, + "finishTime": 5.6, + "dialogue": { + "text": "Hi Tom, you look a bit down these days. Is everything okay?", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 6.3, + "finishTime": 9.5, + "dialogue": { + "text": "Hey Alice, yeah, I feel a bit demotivated.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 9.8, + "finishTime": 13.6, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 13.8, + "finishTime": 16.7, + "dialogue": { + "text": "It's exhausting, and it feels like I'm constantly running", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 16.7, + "finishTime": 18.1, + "dialogue": { + "text": "without knowing where I'm going.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 18.9, + "finishTime": 22.7, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 23.4, + "finishTime": 25.7, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 26.2, + "finishTime": 28.8, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 28.8, + "finishTime": 30.6, + "dialogue": { + "text": "instead of working together as a team.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 31.3, + "finishTime": 34.7, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 35, + "finishTime": 38.4, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 38.9, + "finishTime": 41.7, + "dialogue": { + "text": "Sometimes, it feels like we're meeting for no reason,", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 41.7, + "finishTime": 44.3, + "dialogue": { + "text": "and it's hard to find time to actually work on projects.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 45, + "finishTime": 48.4, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 49, + "finishTime": 52.6, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 52.6, + "finishTime": 56.6, + "dialogue": { + "text": "without any variation. It feels like I'm wasting my skills and creativity.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 57.06, + "finishTime": 59, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 59.6, + "finishTime": 62.8, + "dialogue": { + "text": "Repeating the same tasks over and over can be demotivating.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 63.2, + "finishTime": 66.4, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 66.8, + "finishTime": 69.4, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation,", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 69.4, + "finishTime": 71.3, + "dialogue": { + "text": "and it's good to share and support each other.", + "align": "left" + } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 71.8 + }, + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 72.3 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md index b8674840c93..9a3003405af 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-40 --- - + # --description-- @@ -22,7 +19,7 @@ In this conversation, Alice notices something about Tom's mood and asks if he's ## --sentence-- -`Hi Tom, you look a bit _ _ days. Is everything okay?` +`Hi, Tom. You look a bit _ _ days. Is everything okay?` ## --blanks-- @@ -39,3 +36,47 @@ This word is used to describe feeling sad or unhappy. It's like when you're not ### --feedback-- This word is used with `days` to talk about the current time or the recent period. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 0.98, + "finishTimestamp": 4.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.60, + "dialogue": { + "text": "Hi, Tom. You look a bit down these days. Is everything okay?", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.10 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md index 8fe09a43d89..fdd78d7f84d 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-41 --- - + # --description-- @@ -20,7 +17,7 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ## --sentence-- -`Hey Alice, yeah, I feel a bit _.` +`Hey, Alice. Yeah, I feel a bit _.` ## --blanks-- @@ -29,3 +26,47 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ### --feedback-- This word is used to describe how Tom feels. It ends with `ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 8.48 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md index a8f6062add9..e30ea2d793a 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-42 --- - + # --description-- @@ -46,8 +43,52 @@ This word means `lacking` or `not having` something. --- -`break` +`breaks` ### --feedback-- -This word refers to a short period of rest or pause from work or activity. +This word refers to a short period of rest or pause from work or activity. Use the plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 8.84, + "finishTimestamp": 12.60 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.76, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.26 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md index 90185d888a6..b19719a1211 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-43 --- - + # --description-- @@ -45,3 +42,47 @@ This word means something is happening all the time or very often. ### --feedback-- This word is used to indicate the absence of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 12.82, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 5.30, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.80 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md index b6f27b9c9b9..524c4be5635 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-44 --- - + # --description-- @@ -18,7 +15,7 @@ Tom talks about what's making him feel demotivated. Let's figure out what is bot ## --text-- -What is making Tom feel demotivated and why? +What is making Tom feel demotivated? ## --answers-- @@ -51,3 +48,65 @@ Reflect on Tom's words about his work routine and how it makes him feel. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.54, + "finishTime": 8.3, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 8.52, + "finishTime": 12.82, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 13.32 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md index 23f853581be..b084d8c5f2d 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-45 --- - + # --description-- @@ -51,3 +48,47 @@ She understands how Tom feels ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 18.98 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 2.28, + "dialogue": { + "text": "I totally get that, Tom.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 2.78 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md index 95b626db8ab..18b3ede5a71 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-46 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working more hours than what is normally required, often beyond ### --feedback-- This word describes something that makes you feel very tired, like it's taking all your energy away. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 21.72 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.02, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.52 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md index 8e581dc301d..143b260cab0 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-47 --- - + # --description-- @@ -35,3 +32,47 @@ This word means managing or handling, especially when the situation is challengi ### --feedback-- This word, in the context of the office, refers to the social and power dynamics among coworkers and within the workplace environment. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 24.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.52, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.02 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md index ffd2e2364d2..5c132f9bd9c 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-48 --- - + # --description-- @@ -45,3 +42,47 @@ This word means making an effort to do something, often something challenging. ### --feedback-- This word is about doing tasks, especially with others to achieve a common goal or finish a project. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 25.02, + "finishTimestamp": 29.38 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.36, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.86 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md index eed7315d9fd..1c59d0c36f8 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-49 --- - + # --description-- @@ -51,3 +48,65 @@ Reflect on the specific aspect of work that Alice mentions she hates dealing wit ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 29.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.9, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 5.64, + "finishTime": 7.96, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 8.4, + "finishTime": 12.88, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 13.38 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md index 008029728ad..89639635494 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-50 --- - + # --description-- @@ -22,11 +19,11 @@ Tom is agreeing with Alice about a specific aspect of work that they find unplea ## --blanks-- -`dealing` +`Dealing` ### --feedback-- -This word means managing or handling something, often implying that it's not an easy or enjoyable task. +This word means managing or handling something, often implying that it's not an easy or enjoyable task. Don't forget the capitalization. --- @@ -35,3 +32,47 @@ This word means managing or handling something, often implying that it's not an ### --feedback-- In the context of an office, this word refers to the social and power dynamics among coworkers. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 30.08, + "finishTimestamp": 33.46 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md index 33c828a005d..eb1ae62b875 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-51 --- - + # --description-- @@ -45,3 +42,47 @@ This word is part of a expression that means something is making Tom upset or an ### --feedback-- This word is used when you're talking about experiencing something, like when you have a lot of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md index f182b582c7f..9e516b17b69 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-52 --- - + # --description-- @@ -51,3 +48,47 @@ He wishes for even more meetings ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md index 43b8ae258c9..f457d5cb4c2 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-53 --- - + # --description-- -Listen to the audio and answer the question. +Listen to the audio and fill in the blanks. # --fillInTheBlank-- @@ -51,3 +48,47 @@ This word means to discover or locate something. It's often used when you're loo ### --feedback-- This word is used to emphasize what is really true or happening. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md index e12e17d47ff..a0c2ef0d79a 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-54 --- - + # --description-- @@ -51,3 +48,47 @@ They take away time from working on projects ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md index 2bd6b036fb7..97dde90f3cb 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-55 --- - + # --description-- @@ -24,7 +21,7 @@ Alice: I hear you, Tom. Sitting in meetings for hours can be discouraging. ## --sentence-- -`_ in meetings for hours can be _.` +`I hear you, Tom. _ in meetings for hours can be _.` ## --blanks-- @@ -41,3 +38,47 @@ This word describes the action of being seated. It is capitalized. ### --feedback-- This word means something that makes you feel less confident or willing to continue. It ends in `ing`, showing it's describing the effect of the action. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md index da3c221a1f1..30aeb3ff460 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md @@ -5,12 +5,7 @@ challengeType: 19 dashedName: task-56 --- - + # --description-- @@ -53,3 +48,47 @@ Consider what Alice means by `discouraging` in the context of meetings. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md index c60324ba8d3..2957a5033ab 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-57 --- - + # --description-- @@ -43,3 +40,47 @@ This word is used to describe a large number of things grouped together. It's li ### --feedback-- This word refers to having different types or changes in something. It's the opposite of doing the same thing over and over. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 52.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 6.02, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.52 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md index 63d0a5a5643..cf49c33b69a 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-58 --- - + # --description-- @@ -35,3 +32,47 @@ This word means not using something valuable in a good or effective way. It's li ### --feedback-- This word refers to the ability to make new things or think of new ideas. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 53.24, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.34, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 3.84 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md index 540a3a77c0f..e189fc50af5 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-59 --- - + # --description-- @@ -51,3 +48,56 @@ Consider what Alice says directly annoys her versus how she feels about another ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md index ef09e4af19b..a5f87b483bd 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-60 --- - + # --description-- @@ -51,3 +48,56 @@ Think about whether meetings are mentioned in the context of wasting skills and ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md index fa7b1328561..7f182561d7f 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-61 --- - + # --description-- @@ -39,3 +36,47 @@ This auxiliary verb is used here to emphasize the verb that follows it, making t ### --feedback-- This adjective describes feelings of annoyance or irritation, often because of obstacles or difficulties. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 58.00 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.14, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 3.64 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md index e2e6ee3f118..d0f7a57efaa 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-62 --- - + # --description-- @@ -55,3 +52,47 @@ This word, when used twice with `and` in between, emphasizes the repetition of a ### --feedback-- This word describes something that reduces your desire or willingness to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 61.78 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "That does sound frustrating, Alice. Repeating the same tasks over and over can be demotivating.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md index 27d721f5a0a..bef09034af7 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-63 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to describe an emotional experience or sensation, in this case ### --feedback-- This word is the plural of `this`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md index 1721b02d9e4..c2eefbb7b7d 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-65 --- - + # --description-- @@ -51,3 +48,47 @@ For listening to him ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md index 80ad6cb9859..dc1a51e3b48 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-66 --- - + # --description-- @@ -51,3 +48,47 @@ This word means to tell others about your own experiences, thoughts, or feelings ### --feedback-- This word involves giving help or encouragement, showing you are there for someone. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md index 88359a9631c..ae0f2da0a0d 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-67 --- - + # --description-- @@ -51,3 +48,47 @@ The value of sharing feelings and supporting one another ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md index 01535bb27f7..e34ef923278 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-64 --- - + # --description-- @@ -44,3 +41,46 @@ This word is the middle part of the phrase used to casually introduce new inform This word completes the phrase, indicating a casual addition or shift in the conversation. +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md index abd512abbb8..fb7e5ccda2d 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md @@ -1,6 +1,5 @@ --- id: 65a351bd69b0b72d7ed24eb5 -videoId: nLDychdBwUg title: "Dialogue 3: Talking About Motivations to Pursue a Career" challengeType: 21 dashedName: dialogue-3-talking-about-motivations-to-pursue-a-career @@ -13,3 +12,212 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Lisa", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5, + "dialogue": { + "text": "Hey Lisa, what motivated you to choose a career in tech?", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 6, + "finishTime": 8.5, + "dialogue": { + "text": "One of my main motivations was the financial stability", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 8.8, + "finishTime": 10, + "dialogue": { + "text": "that tech jobs can provide.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 10.4, + "finishTime": 12.8, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 13.3, + "finishTime": 16.3, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 17.4, + "finishTime": 19.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 19.8, + "finishTime": 24, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 24, + "finishTime": 26, + "dialogue": { + "text": "and have different perspectives.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 26.8, + "finishTime": 29.2, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 29.2, + "finishTime": 32.1, + "dialogue": { + "text": "Another thing was the chance to be part of projects", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 32.1, + "finishTime": 34.2, + "dialogue": { + "text": "that push the limits of innovation and creativity.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 34.9, + "finishTime": 36, + "dialogue": { + "text": "I'm with you on that one.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 36.1, + "finishTime": 39.6, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 39.7, + "finishTime": 43.1, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 44.3, + "finishTime": 47.3, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 47.3, + "finishTime": 49.6, + "dialogue": { + "text": "and finding practical solutions is really thrilling.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 50.3, + "finishTime": 53, + "dialogue": { + "text": "Knowing that we solved problems is really exciting, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 53.4, + "finishTime": 56.7, + "dialogue": { + "text": "I hope we keep getting as much motivation from it as we can.", + "align": "left" + } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.2 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.7 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md index e165f760c08..23c160c642f 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-68 --- - + # --description-- @@ -18,7 +15,7 @@ Brian: Hey Lisa, what motivated you to choose a career in tech? ## --sentence-- -`Hey Lisa, what _ you to _ a career in tech?` +`Hey, Lisa, what _ you to _ a career in tech?` ## --blanks-- @@ -34,4 +31,48 @@ This word means something gave you a reason or desire to do something. It ends w ### --feedback-- -This verb is about making a decision between different options. +This verb is about making a decision between different options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md index 94e4ccd2b3e..3a96b95c93a 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-69 --- - + # --description-- @@ -51,3 +48,47 @@ What motivated her to pick a tech career ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md index 47d7700e414..9dc5f7bc32d 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-70 --- - + # --description-- @@ -37,3 +34,47 @@ The most important. ### --feedback-- Being steady, meaning you don't have to worry too much about it. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md index afed572b3be..22a27d6cb43 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-71 --- - + # --description-- @@ -35,3 +32,47 @@ This word is a past tense verb used to describe a state or condition in the past ### --feedback-- This verb means to give or supply something needed, like help, information, or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md index a5031402575..f006bbf44d1 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-72 --- - + # --description-- @@ -52,3 +48,71 @@ Reflect on Lisa's statement and whether travel is mentioned as a motivation. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.50 + }, + { + "character": "Lisa", + "opacity": 1, + "startTime": 5.50 + }, + { + "character": "Lisa", + "startTime": 5.82, + "finishTime": 10.02, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md index e71f55301a3..4b20a9bd448 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-73 --- - + # --description-- @@ -37,3 +34,47 @@ This verb means giving permission or making it possible to do something. this ve ### --feedback-- This noun describes the feeling of being certain about your abilities or something you're going to do. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 9.48, + "finishTimestamp": 11.90 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.42, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 3.92 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md index 4f8c68dfebb..ca8b0a42958 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-74 --- - + # --description-- @@ -39,3 +36,47 @@ This word refers to different areas of work or study. It's plural here because s ### --feedback-- This verb is used to talk about successfully reaching a goal, especially after putting in effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 12.16, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md index d0951b06bde..84aca093d52 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-75 --- - + # --description-- @@ -51,3 +48,65 @@ Lisa doesn't mention working less. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md index 1e5b8911585..9bd217faa04 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-76 --- - + # --description-- The words `much` and `many` are used to talk about quantity. @@ -52,3 +49,65 @@ Reflect on Lisa's statement about what makes tech jobs stand out for her. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md index 38a5ed3758e..013e56a7705 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-77 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to Brian's response to Lisa and fill in the missing word that shows he st ### --feedback-- This adverb is used to emphasize the truth or importance of a statement, showing strong agreement or belief. it ends with `ly`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 18.38 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.40, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.90 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md index 620135fd503..145afc143d8 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-78 --- - + # --description-- @@ -51,3 +48,47 @@ This word is used to describe different areas of study or work. This word is in ### --feedback-- These are different ways of viewing or thinking about something. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 18.80, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.20, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.70 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md index 5f88ce8ca38..56d23563f4a 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-79 --- - + # --description-- @@ -51,3 +48,56 @@ Consider Brian's interest in working across many fields versus concentrating on ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 3.82, + "finishTime": 10.02, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md index 9867dd455d5..36fa55aa8ae 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-80 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working together with others. Notice it ends with `-ing`, indica ### --feedback-- This adjective describes something that is thrilling or full of energy. It ends with `-ing`, showing a quality or state. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.62, + "finishTimestamp": 28.18 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md index 31ed219cb44..d126871e672 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-81 --- - + # --description-- @@ -45,3 +42,47 @@ TTo extend or go beyond usual limits or boundaries. It's often used to talk abou ### --feedback-- This noun refers to new ideas, products, or methods that improve something or solve problems. It's about coming up with new ways to do things. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 28.38, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md index 976777de56e..19ed243bc7e 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-82 --- - + # --description-- @@ -51,3 +48,56 @@ Consider whether Lisa's motivation is related to work environment or the nature ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.94 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md index cc4a931a4a1..9d83cc465d3 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-83 --- - + # --description-- @@ -52,3 +48,80 @@ He agrees with Lisa ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 34.98 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.45 + }, + { + "character": "Brian", + "opacity": 1, + "startTime": 8.45 + }, + { + "character": "Brian", + "startTime": 8.57, + "finishTime": 10.16, + "dialogue": { + "text": "I'm with you on that one.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.66 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md index 3c748ab456e..c9ec667c225 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-84 --- - + # --description-- @@ -37,3 +34,47 @@ This noun describes the ability to change or adapt easily according to different ### --feedback-- This word refers to the specific functions or positions that individuals can have within a group or organization. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 38.36 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.76 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md index f111304b929..566d8c5e7db 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-85 --- - + # --description-- @@ -20,7 +17,7 @@ Listen carefully and fill in the missing words about what tech roles make possib ## --sentence-- -`They _ us to balance our jobs with personal _ and hobbies.` +`I'm also interested in the flexibility that tech roles offer. They _ us to balance our jobs with personal _ and hobbies.` ## --blanks-- @@ -37,3 +34,56 @@ This verb means to make something possible or to give permission for something. ### --feedback-- This noun refers to things you enjoy doing, like hobbies or activities that catch your attention. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md index 0efe7ddf734..f5aab15821c 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-86 --- - + # --description-- @@ -55,3 +52,56 @@ Is Brian talking about traveling, or is he interested in something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md index 1828c2b24fd..f285c7e7f50 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-87 --- - + # --description-- @@ -45,3 +42,47 @@ This word means discovering or coming up with something, like an answer or solut ### --feedback-- This adjective means very exciting. It often describes something that makes your heart beat faster because it's so exciting or fun. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md index a2b77cc1c45..689b3e667de 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-88 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on the word `satisfaction` and if it suggests feeling tired. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md index 122529e8f39..fd8178da8fc 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-89 --- - + # --description-- @@ -43,3 +40,47 @@ This adjective describes something that is thrilling or causes great enthusiasm. ### --feedback-- This word means receiving or obtaining something. Here, it's also in the `-ing` form, indicating an ongoing action or process. Remember to use double `t`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md index f8bb1a273ee..a72f4990d84 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-90 --- - + # --description-- @@ -53,3 +50,47 @@ Brian talks about being excited by solving problems, not about where to find mot ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md index 93a91f9790d..f0a8796d57b 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md @@ -13,3 +13,221 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Bob", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sarah", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.6, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech?", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 5, + "finishTime": 7, + "dialogue": { + "text": "It's all those amazing gadgets!", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 7.8, + "finishTime": 9.6, + "dialogue": { + "text": "I can see your enthusiasm, Bob!", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 9.9, + "finishTime": 12.3, + "dialogue": { + "text": "Tell me, which tech gadgets are your absolute favorites?", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 13, + "finishTime": 16.2, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 16.3, + "finishTime": 18.9, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health,", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 19.2, + "finishTime": 22.7, + "dialogue": { + "text": "and even helps me stay organized with reminders and notifications.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 23.7, + "finishTime": 26, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 26, + "finishTime": 28.1, + "dialogue": { + "text": "The camera quality, the speed,", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 28.3, + "finishTime": 30.8, + "dialogue": { + "text": "and the number of apps available are what I like the most.", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 31.2, + "finishTime": 33.9, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 34.3, + "finishTime": 37.2, + "dialogue": { + "text": "Gadgets like these are transforming our daily lives.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 37.6, + "finishTime": 40.8, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 41.3, + "finishTime": 44, + "dialogue": { + "text": "I love capturing stunning aerial shots", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 44, + "finishTime": 46.5, + "dialogue": { + "text": "and exploring new angles for photography.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 47.7, + "finishTime": 50.3, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 50.7, + "finishTime": 52.7, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 52.7, + "finishTime": 54.5, + "dialogue": { + "text": "It's amazing how these innovations", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 54.5, + "finishTime": 56.8, + "dialogue": { + "text": "keep making our lives more interesting and connected.", + "align": "right" + } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.3 + }, + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.8 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md index 2f5b51c5efe..1c735765ddb 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-91 --- - + # --description-- @@ -47,3 +44,47 @@ This word is used to point out specific things that are being talked about, in t ### --feedback-- This word refers to small electronic devices or tools that are useful or interesting. It's often used to talk about cool tech items. It is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md index 06bb47f4e2f..7ddc748e75b 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-92 --- - + # --description-- @@ -51,3 +48,47 @@ The latest technology gadgets ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md index 746bfa4615b..96ed9a633c9 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-93 --- - + # --description-- @@ -27,3 +24,47 @@ Sarah: I can see your enthusiasm, Bob! ### --feedback-- This noun describes the feeling of being very excited or interested in something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 8.60 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 2.74, + "dialogue": { + "text": "I can see your enthusiasm, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.24 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md index a7eb6fcbfcb..4f55a749a61 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-94 --- - + # --description-- @@ -22,7 +19,7 @@ Sarah: I can see your enthusiasm, Bob! Tell me, which tech gadgets are your abso ## --sentence-- -`Tell me, _ tech gadgets are your _ favorites?` +`I can see your enthusiasm, Bob! Tell me, _ gadgets are your _ favorites?` ## --blanks-- @@ -39,3 +36,47 @@ This word asks for a specific choice or selection from a known group of items. ### --feedback-- This adjective emphasizes that the choice is the most complete or total among all options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 11.36 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.50, + "dialogue": { + "text": "I can see your enthusiasm, Bob. Tell me, which gadgets are your absolute favorites?", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.00 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md index 09bd788377d..9514f27cc60 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-95 --- - + # --description-- @@ -35,3 +32,47 @@ This preposition is used to show that something belongs to or is part of somethi ### --feedback-- This noun refers to a type of watch that has more features than just telling time, often including apps and internet connectivity. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 15.20 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.66 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md index b247dacc6dd..feadc88525d 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md @@ -5,10 +5,8 @@ challengeType: 22 dashedName: task-96 --- - + + # --description-- `To track` means to follow or monitor the progress, movement, or development of something or someone. @@ -44,3 +42,47 @@ This verb means to monitor or follow the course or progress of something, especi ### --feedback-- This verb means to make it easier or possible for someone to do something by offering services or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md index 99dcae91a0c..2c3332a8708 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-97 --- - + # --description-- @@ -45,3 +42,47 @@ This adjective means arranged in a systematic way, especially on a large scale. ### --feedback-- These are alerts or messages that prompt you to remember tasks or appointments. This word ends with `s`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md index 4d36b7b2989..49fbdc264ee 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-98 --- - + # --description-- @@ -51,3 +48,56 @@ It keeps him connected, tracks his health, and helps him stay organized ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.32, + "finishTime": 10.70, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 11.20 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md index 7185d037ed7..2d1e897054c 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-99 --- - + # --description-- @@ -35,3 +32,47 @@ This word is capitalized and in plural form. ### --feedback-- This word describes advanced mobile phones with extensive computing capabilities and connectivity. It is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 25.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.98 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md index 1f660afcb03..81e873d902e 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-100 --- - + # --description-- @@ -53,3 +50,47 @@ This adjective means something can be accessed or used, like apps in an app stor ### --feedback-- This word is used to indicate the highest degree or the greatest amount of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 25.24, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.60, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.10 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md index 6998dd4ffa5..1e063e1befc 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-101 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on whether design is a factor in Sarah's stated preferences. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.56, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 3.68, + "finishTime": 8.08, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 8.58 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md index dac54e85492..92b3b88cee4 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-102 --- - + # --description-- @@ -43,3 +40,47 @@ This verb means causing a significant change or improvement in something. This w ### --feedback-- This adjective refers to something that happens every day or is part of everyday life. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md index 66cda46110d..6e56479dc8d 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-103 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Bob mentions radio as a factor in transforming daily life. ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md index ec96099aa49..93b5cc92a66 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-104 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to talk about the current period of time or the present days. ### --feedback-- This noun refers to remote-controlled flying machines, often used for photography, racing, or recreation. This word is capitalized. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 39.78 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.20, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.70 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md index 2eb13bfcb4b..7bdc1f302f5 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-105 --- - + # --description-- @@ -43,3 +40,47 @@ This verb involves examining or investigating something in order to learn more a ### --feedback-- This noun refers to the art, practice, or job of taking pictures with a camera, capturing moments, and expressions. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md index 08e3ab9b847..95aa8e526fc 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-106 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective describes something extremely beautiful or impressive. ### --feedback-- In photography, this noun means photographs or the act of taking a photograph. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md index 1b7d3770f1d..f8e77d3a9fe 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-107 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective refers to something related to the air or happening in the sky. ### --feedback-- This noun refers to the specific viewpoints or positions from which photos are taken. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md index c172cb36554..cf2a562eb4c 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-108 --- - + # --description-- @@ -51,3 +48,56 @@ They allow for stunning aerial photography ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.2, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.78, + "finishTime": 9.98, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 10.48 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md index a67e640bd01..64e3aa577d5 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-109 --- - + # --description-- @@ -35,3 +32,47 @@ This adjective in the expression means allowing access, passage, or a view throu ### --feedback-- This noun refers to things that may happen or be the case in the future, often exciting or beneficial opportunities. it is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.48, + "finishTimestamp": 49.32 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.84, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 4.34 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md index a7c5acbe452..9a5e4ff7dc6 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-110 --- - + # --description-- @@ -35,3 +32,47 @@ This noun describes a strong feeling of enthusiasm or excitement for something o ### --feedback-- In this context, this adjective means that a feeling, especially a positive one like enthusiasm, can spread from one person to others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 49.52, + "finishTimestamp": 51.74 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.22, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.72 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md index 0578945ebcc..c64025643be 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-111 --- - + # --description-- @@ -51,3 +48,47 @@ This adjective describes something that arouses curiosity or is enjoyable and en ### --feedback-- This adjective means being in touch with others or having easy access to information, especially through technology. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 51.94, + "finishTimestamp": 56.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.10, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 5.60 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md index bc02e1710e1..fe30597a170 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-112 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on the enthusiasm and positivity in Sarah's statement. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.28, + "finishTimestamp": 55.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 6.26, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob. Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 6.46, + "finishTime": 10.36, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 10.86 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md index ebba772a320..20eaca5ac90 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md @@ -1,6 +1,5 @@ --- id: 65a533f54a5afeff6c6bb996 -videoId: nLDychdBwUg title: "Dialogue 5: Discussing Open-source Software" challengeType: 21 dashedName: dialogue-5-discussing-open-source-software @@ -13,3 +12,284 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Tom", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sophie", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.5, + "dialogue": { + "text": "Hey, Sophie, what motivates you", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 3.8, + "finishTime": 6.9, + "dialogue": { + "text": "to work on open-source software projects in your free time?", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 7.8, + "finishTime": 10.2, + "dialogue": { + "text": "Well, I love contributing to open-source projects!", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 10.5, + "finishTime": 13, + "dialogue": { + "text": "I really like the sense of community and collaboration.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 13.5, + "finishTime": 15.4, + "dialogue": { + "text": "It's incredible how people from around the world", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 15.4, + "finishTime": 17.5, + "dialogue": { + "text": "come together to create something amazing.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 18.2, + "finishTime": 20.4, + "dialogue": { + "text": "Yeah. I checked out some open-source projects,", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 20.5, + "finishTime": 23.1, + "dialogue": { + "text": "but I admit that I have problems with the amount of time", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 23.1, + "finishTime": 24.3, + "dialogue": { + "text": "it can take to contribute.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 24.7, + "finishTime": 27.1, + "dialogue": { + "text": "Sometimes, it can be so time-consuming.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 27.1, + "finishTime": 29.7, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 29.9, + "finishTime": 33.3, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 33.8, + "finishTime": 36.5, + "dialogue": { + "text": "Open source is all about transparency and accessibility,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 36.5, + "finishTime": 38.4, + "dialogue": { + "text": "and that's something I truly believe in.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 39, + "finishTime": 42.2, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 42.7, + "finishTime": 45.7, + "dialogue": { + "text": "For me, I like the idea of practicing my skills", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 45.7, + "finishTime": 48, + "dialogue": { + "text": "and getting recognition for my contributions.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 48.5, + "finishTime": 51.4, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 52.4, + "finishTime": 56, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 56.4, + "finishTime": 58, + "dialogue": { + "text": "there isn't much you can do to save it.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 58.4, + "finishTime": 61.4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 62.2, + "finishTime": 65.2, + "dialogue": { + "text": "That's true. The sustainability of open-source projects", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 65.2, + "finishTime": 67.5, + "dialogue": { + "text": "is something I'm growing to appreciate more.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 67.8, + "finishTime": 69.2, + "dialogue": { + "text": "Thanks for sharing your motivations.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 69.8, + "finishTime": 71.7, + "dialogue": { + "text": "I think I'll see if I can find a project", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 71.7, + "finishTime": 72.8, + "dialogue": { + "text": "to dedicate some spare time to.", + "align": "left" + } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 73.3 + }, + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 73.8 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md index a463dcea5d0..ee5d378ba03 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-113 --- - + # --description-- @@ -37,3 +34,47 @@ This preposition is used to indicate involvement or engagement in a particular a ### --feedback-- This part of the term refers to the origin or starting point, in this case, indicating that the software's foundational code is open and accessible to all. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md index 2d227ef6fe5..1e409d23632 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-114 --- - + # --description-- @@ -51,3 +48,47 @@ Think about whether Tom is asking about skills or the reasons behind an activity ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md index ab28bfe2622..395d2fa3522 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-115 --- - + # --description-- @@ -20,7 +17,7 @@ Sophie: Well, I love contributing to open-source projects! I really like the sen ## --sentence-- -`I really like the sense of _ and _.` +`Well, I love contributing to open-source projects! I really like the sense of _ and _.` ## --blanks-- @@ -37,3 +34,47 @@ Describes a group of people who share common interests or values, especially in ### --feedback-- Refers to the act of working with someone to produce or create something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md index c9e678c193b..e321ce0b307 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-116 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Sophie's enjoyment comes from personal recognition or somethi ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md index 7b9101449a3..6a2c024d0c1 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-117 --- - + # --description-- @@ -45,3 +42,47 @@ Refers to the earth or the globe. ### --feedback-- Indicates the act of joining with others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md index d2ba30725da..3917f0f08f3 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-118 --- - + # --description-- @@ -51,3 +48,47 @@ Sophie talks about working as a group. Is it about being famous or doing somethi ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md index a0b608d8342..a41f1bfc8cb 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-119 --- - + # --description-- @@ -20,7 +17,7 @@ Tom: Yeah. I checked some open-source projects, but I admit that I have problems ## --sentence-- -`Yeah. I checked some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` +`Yeah, I checked out some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` ## --blanks-- @@ -37,3 +34,47 @@ This verb means to confess or acknowledge something, often reluctantly. ### --feedback-- This noun is used to describe the quantity or measure of something, in this case, referring to time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 23.34 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.28, + "dialogue": { + "text": "Yeah, I checked out some open-source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.78 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md index 6bcebcf1558..64acf0261ac 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-120 --- - + # --description-- @@ -18,7 +15,7 @@ Tom "Sometimes, it can be so time-consuming." ## --sentence-- -`Sometimes, it can be _ time-_.` +`Sometimes it can be _ time-_.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to emphasize the degree of something, in this case, how much t ### --feedback-- This word describes activities that use up a lot of time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 23.52, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.64, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.14 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md index 2bbaf6f322f..a2ad29fdb26 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-121 --- - + # --description-- @@ -51,3 +48,56 @@ Think about if Tom says the projects are easy or something else. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Yeah, I checked out some open source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 7.46, + "finishTime": 10.10, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 10.60 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md index 26975fa42d5..52145efc9dc 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-122 --- - + # --description-- @@ -21,7 +18,7 @@ For example, if you say: `I decided to learn a new language and practice every d ## --sentence-- -`It can _ a _.` +`I understand, Tom. It can _ a _.` ## --blanks-- @@ -38,3 +35,47 @@ This word is used to talk about something being true or existing. ### --feedback-- This word means a promise to do something or give your time to it, showing you are ready to work hard and keep your word. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 28.72 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md index 4232fcd5dbb..10d1d55dd1f 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-123 --- - + # --description-- @@ -35,3 +32,47 @@ This verb, in this context, means to tolerate or bear, especially when talking a ### --feedback-- This adjective describes something not open or accessible to the general public or kept for the use of a specific person or group. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md index 25acc5b187b..4920280d317 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-124 --- - + # --description-- @@ -35,3 +32,47 @@ This word, ending in `-ing`, means to observe or witness something happening.. ### --feedback-- Also ending in `-ing`, this word is used to describe the state or condition of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md index e4878ae4f6c..feb206c8d3b 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-125 --- - + # --description-- @@ -37,3 +34,51 @@ This word means being open and clear about things. It ends with `-y`, showing it ### --feedback-- This word is about making things easy for everyone to use or get. It ends with `-ity`, showing it's about the state of being accessible. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 32.52, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 5.74, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.24 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md index 2e6e266c6ab..b1b1c1ca42c 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-126 --- - + # --description-- -Sophie expresses her thoughts on open-source projects.. +Sophie expresses her thoughts on open-source projects. # --question-- @@ -51,3 +48,56 @@ Reflect on Sophie's belief in open source and its benefits. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 7.16, + "dialogue": { + "text": "I understand, Tom. It can be a commitment, but I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.56, + "finishTime": 12.10, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 12.60 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md index 9ef306c9252..e6c5fe030c7 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-127 --- - + # --description-- @@ -35,3 +32,51 @@ This noun refers to the quality of being open and clear, especially about proces ### --feedback-- This noun describes something that provides a reason or incentive for someone to act in a certain way or to put in more effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 41.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md index bbaba54e9e1..e05f1982063 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-128 --- - + # --description-- @@ -37,3 +34,51 @@ This verb means to perform an activity or exercise repeatedly or regularly in or ### --feedback-- This noun refers to the action or process of acknowledging someone's efforts, achievements, or qualities. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 41.5, + "finishTimestamp": 47.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.62, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.12 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md index a821137445a..5d15ffd7545 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-129 --- - + # --description-- @@ -35,3 +32,51 @@ This adjective is used to describe something that is very good or impressive. ### --feedback-- This adjective means having the ability, power, or qualities necessary to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 47.54, + "finishTimestamp": 50.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.9, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.4 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md index 76ee25756a6..045d8463245 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-130 --- - + # --description-- @@ -51,3 +48,69 @@ Reflect on whether Tom's attraction to open-source is about tight schedules. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 50.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.42, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.88, + "finishTime": 10.2, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 10.72, + "finishTime": 13.62, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 14.12 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md index f47924c5a21..763fa02b646 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-131 --- - + # --description-- @@ -18,7 +15,7 @@ Sophie: Also, when software becomes obsolete because it's no longer maintained, ## --sentence-- -`Also, when software becomes _, there isn't _ you can do to _ it.` +`Also, when software becomes _ because it's no longer maintained, there isn't _ you can do to _ it.` ## --blanks-- @@ -43,3 +40,51 @@ This word is used to indicate a small amount or degree; not a lot. ### --feedback-- This verb means to keep safe or rescue from harm or danger, in this context, to try and make something usable again. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md index 27b0dbb43cf..a187bb8b293 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-132 --- - + # --description-- @@ -43,3 +40,51 @@ Something that once was true or possible is not the case anymore. ### --feedback-- This contraction of `is not` is used to express the negation of the statement that follows, indicating a limitation or impossibility. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md index 8941733f8b9..ca97fa188f9 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-133 --- - + # --description-- @@ -51,3 +48,51 @@ It can't be used effectively anymore ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md index e225360b121..baadc6b07e8 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-134 --- - + # --description-- @@ -18,7 +15,7 @@ AUDIO REFERENCE: ## --sentence-- -`With open-_, there's always a _ for continuous improvement.` +`With open _, there's always a _ for continuous improvement.` ## --blanks-- @@ -35,3 +32,51 @@ Refers to a model where the source code is available for anyone to see, modify, ### --feedback-- This noun means an opportunity or possibility for something to happen or be done, especially something desirable. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md index 410699942ed..15c83340f6f 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-135 --- - + # --description-- @@ -35,3 +32,51 @@ It indicates an ongoing, unending process of enhancement or development. ### --feedback-- It refers to the act of making something better, more effective, or more efficient. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md index a8c886124e7..7718697bd96 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-137 --- - + # --description-- @@ -27,3 +24,51 @@ Tom: The sustainability of open-source projects is something I'm growing to appr ### --feedback-- It refers to the ongoing development of open-source projects over the long term. it ends with `-y`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md index dcc88c43208..d6ae5f89d89 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-138 --- - + # --description-- -`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time,` means they might not like them at first, but after some timethey start to like them more. +`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time` means they might not like them at first, but after some timethey start to like them more. # --fillInTheBlank-- @@ -34,4 +31,52 @@ This word means being able to continue over time in a good way. ### --feedback-- -Starting to like something more as you understand it better. +Starting to like something more as you understand it better. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md index ecd1d6e7c95..abc9cf2415f 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-139 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on Tom's statement about sustainability and appreciation, not complexity ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md index a6a32b631e8..87c40eaf830 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-140 --- - + # --description-- @@ -47,3 +44,51 @@ This verb means to discover or locate something after searching for it. ### --feedback-- Describes time that is available to use as you wish, not taken up by work or other obligations. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md index bd2fddb1bb4..52d0740b1db 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-141 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on whether Tom's interest is in language learning or engaging in a proje ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md index ea7dbd6dc1e..05dc28f6ddc 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-1 --- - + # --description-- @@ -18,7 +15,7 @@ Listen to what Brian asks Maria. Pay attention to the verbs he uses. ## --sentence-- -`Hey Maria, I _ a question. Do you know what _ the team?` +`Maria, I _ a question. Do you know what _ the team?` ## --blanks-- @@ -35,3 +32,47 @@ This verb is used when someone is in possession of something or wants to express ### --feedback-- This word means to give someone a reason to do something. This verb in conjugated in the third person. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 3.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.02 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md index d39e86e67e9..ef6b246a2e4 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-2 --- - + # --description-- @@ -39,3 +36,47 @@ This word is used to indicate the reason or cause of something. It is conjugated ### --feedback-- It ends with `-ed` because it's an adjective that comes from a verb. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 3.92, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.50, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.00 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md index 5c39c1c7312..050241fa5e6 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-3 --- - + # --description-- @@ -20,7 +17,7 @@ Listen to the audio and complete the sentence. ## --sentence-- -`Hey Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` +`Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` ## --blanks-- @@ -37,3 +34,56 @@ Think about the word that means to give someone a reason to do something right n ### --feedback-- This word describes how someone feels when they have a reason or desire to do something. This word ends with `-ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md index 4a6aa89ed04..90a6bbe82b3 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md @@ -5,20 +5,17 @@ challengeType: 19 dashedName: task-4 --- - + # --description-- -In the dialogue, Brian asks three questions but they are all connected. +In the dialogue, Brian asks a couple of related questions. # --question-- ## --text-- -`What is Brian asking Maria about?` +What is Brian asking Maria about? ## --answers-- @@ -51,3 +48,56 @@ The conversation is centered around motivation, not the physical location of whe ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md index 3e923e63532..f725307b614 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-21 --- - + # --description-- @@ -36,3 +33,46 @@ This word means working together with others on a project or task. It ends with This word means thinking of many ideas together with a group of people. It ends with `-ing`. +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md index 1c4102ed1d3..2522ee2b5e1 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-22 --- - + # --description-- @@ -51,3 +48,47 @@ Maria refers to her creative team, not her friends, as her collaborators. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.28 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.28 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md index c3f28429a68..ab0e4646869 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-23 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to create or produce something, especially ideas or solutions. ### --feedback-- This word refers to ideas or plans that are used in thinking, discussion, or creating something new. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 41.84, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.78, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.28 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md index c2510030f2c..8795bdf6d10 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-24 --- - + # --description-- @@ -51,3 +48,56 @@ Collaborating with the creative team ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.70, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.14, + "finishTime": 7.92, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 8.42 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md index 3c6ee35860c..b801e7efce9 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-25 --- - + # --description-- @@ -35,3 +32,47 @@ This word means working together with others to achieve a goal. This word is cap ### --feedback-- This word refers to the use of imagination or original ideas to create something. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 48.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.22 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md index a9680b0824a..75c938c595f 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-27 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to find something or someone without planning to, especially pro ### --feedback-- This word is used for problems with machines or computers that need special knowledge to understand or fix. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md index 5ee0b89f981..89a97ac83d7 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-29 --- - + # --description-- @@ -27,3 +24,47 @@ When something is `frustrating`, it makes you feel upset or annoyed because you ### --feedback-- This word is used when something makes you feel upset or annoyed because it is difficult or impossible to deal with. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 53.02, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.50, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.00 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md index 1f9e7b21387..02733f0f66c 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-30 --- - + # --description-- @@ -51,3 +48,65 @@ Does having many ideas make Brian frustrated, or is it something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 5.02, + "finishTime": 9.34, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 9.74, + "finishTime": 11.24, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 11.74 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md index 3dddb17e8ef..47e9d5633b4 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-31 --- - + # --description-- @@ -35,3 +32,47 @@ This word means little problems with things like computers or apps. When there a ### --feedback-- This word means to make an effort to do something, especially when it's hard. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md index fe21921444c..ce9ced73581 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-33 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether taking a break is mentioned as a way to deal with glitches. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md index 69d94c303e5..7c44898f823 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-34 --- - + # --description-- @@ -37,3 +34,47 @@ This word means being very excited or eager about something. It's like when you ### --feedback-- This word means finding a way to fix a problem. It's like when you figure out the answer to a difficult question. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.76, + "finishTimestamp": 65.66 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.90, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.40 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md index 0365cb0e9f0..17d79cd22ec 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md @@ -6,10 +6,7 @@ dashedName: task-36 --- - + # --description-- @@ -52,3 +49,56 @@ Reflect on whether the speed of solving problems is what Maria highlights as mot ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.96, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.7, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.16, + "finishTime": 8.84, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 9.34 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md index 7525fdadd5f..39df7aceed5 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-37 --- - + # --description-- @@ -18,7 +15,7 @@ In this part of the conversation, Brian talks about how the talk made him feel a ## --sentence-- -`Yeah. Wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` +`Yeah, wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` ## --blanks-- @@ -35,3 +32,47 @@ This word means something that gives you energy or a reason to do something. It' ### --feedback-- This word means giving something that you have to others. It's like when you tell someone your ideas or feelings. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 70.38, + "finishTimestamp": 76.10 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 6.72, + "dialogue": { + "text": "Yeah, wow. You know what? This was a really motivating talk. Thanks for sharing your thoughts.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.22 + } + ] +} +``` diff --git a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md index 6bb2b29cd3b..b1bcee11103 100644 --- a/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md +++ b/curriculum/challenges/espanol/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-136 --- - + # --description-- @@ -51,3 +48,60 @@ Reflect on the connection between updates and user experience Sophie suggests. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.02, + "finishTime": 10.02, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/german/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md b/curriculum/challenges/german/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md index b84cc343119..55a9b5f84f7 100644 --- a/curriculum/challenges/german/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md +++ b/curriculum/challenges/german/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md @@ -26,7 +26,7 @@ Hier ist ein Beispiel: # --instructions-- -Zeit, eine Pause von Camper Cat zu machen und seinen Kollegen Zersiax (@zersiax) zu treffen, einen Meister der Barrierefreiheit und einen Screenreader-Nutzer. To hear a clip of his screen reader in action, add an `audio` element after the `p` element. Füge das `controls`-Attribut hinzu. Then place a `source` element inside the `audio` tags with the `src` attribute set to `https://s3.amazonaws.com/freecodecamp/screen-reader.mp3` and `type` attribute set to `"audio/mpeg"`. +Zeit, eine Pause von Camper Cat zu machen und seinen Kollegen Zersiax (@zersiax) zu treffen, einen Meister der Barrierefreiheit und einen Screenreader-Nutzer. To hear a clip of his screen reader in action, add an `audio` element after the `p` element. Füge das `controls`-Attribut hinzu. Then place a `source` element inside the `audio` tags with the `src` attribute set to `https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3` and `type` attribute set to `"audio/mpeg"`. **Hinweis:** Der Audioclip klingt vielleicht schnell und ist schwer verständlich, aber das ist eine normale Geschwindigkeit für Benutzer von Screenreadern. @@ -70,7 +70,7 @@ Der Wert für das `src`-Attribut im `source`-Tag sollte genau mit dem Link in de ```js assert( $('source').attr('src') === - 'https://s3.amazonaws.com/freecodecamp/screen-reader.mp3' + 'https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3' ); ``` @@ -108,7 +108,7 @@ assert($('source').attr('type') === 'audio/mpeg');

A sound clip of Zersiax's screen reader in action.

diff --git a/curriculum/challenges/german/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md b/curriculum/challenges/german/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md index 68b357b0aa6..84d1313d075 100644 --- a/curriculum/challenges/german/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md +++ b/curriculum/challenges/german/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md @@ -93,7 +93,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -186,7 +186,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/german/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md b/curriculum/challenges/german/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md index 2c1e6c1ebdc..de95899239f 100644 --- a/curriculum/challenges/german/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md +++ b/curriculum/challenges/german/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md @@ -102,7 +102,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -198,7 +198,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/german/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md b/curriculum/challenges/german/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md index acdb1b5bd69..ad24b00adea 100644 --- a/curriculum/challenges/german/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md +++ b/curriculum/challenges/german/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md @@ -95,7 +95,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -190,7 +190,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/german/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md b/curriculum/challenges/german/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md index ab2942e2952..4814691e033 100644 --- a/curriculum/challenges/german/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md +++ b/curriculum/challenges/german/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md @@ -98,7 +98,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -192,7 +192,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md b/curriculum/challenges/german/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md new file mode 100644 index 00000000000..47a2bcd6988 --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md @@ -0,0 +1,887 @@ +--- +id: 5e44413e903586ffb414c94e +title: Build a Budget App Project +challengeType: 23 +forumTopicId: 462361 +dashedName: build-a-budget-app-project +--- + +# --description-- + +Complete the `Category` class. It should be able to instantiate objects based on different budget categories like *food*, *clothing*, and *entertainment*. When objects are created, they are passed in the name of the category. The class should have an instance variable called `ledger` that is a list. The class should also contain the following methods: + +- A `deposit` method that accepts an amount and description. If no description is given, it should default to an empty string. The method should append an object to the ledger list in the form of `{"amount": amount, "description": description}`. +- A `withdraw` method that is similar to the `deposit` method, but the amount passed in should be stored in the ledger as a negative number. If there are not enough funds, nothing should be added to the ledger. This method should return `True` if the withdrawal took place, and `False` otherwise. +- A `get_balance` method that returns the current balance of the budget category based on the deposits and withdrawals that have occurred. +- A `transfer` method that accepts an amount and another budget category as arguments. The method should add a withdrawal with the amount and the description "Transfer to [Destination Budget Category]". The method should then add a deposit to the other budget category with the amount and the description "Transfer from [Source Budget Category]". If there are not enough funds, nothing should be added to either ledgers. This method should return `True` if the transfer took place, and `False` otherwise. +- A `check_funds` method that accepts an amount as an argument. It returns `False` if the amount is greater than the balance of the budget category and returns `True` otherwise. This method should be used by both the `withdraw` method and `transfer` method. + +When the budget object is printed it should display: + +- A title line of 30 characters where the name of the category is centered in a line of `*` characters. +- A list of the items in the ledger. Each line should show the description and amount. The first 23 characters of the description should be displayed, then the amount. The amount should be right aligned, contain two decimal places, and display a maximum of 7 characters. +- A line displaying the category total. + +Here is an example usage: + +```py +food = Category("Food") +food.deposit(1000, "deposit") +food.withdraw(10.15, "groceries") +food.withdraw(15.89, "restaurant and more food for dessert") +clothing = Category("Clothing") +food.transfer(50, clothing) +print(food) +``` + +And here is an example of the output: + +```bash +*************Food************* +initial deposit 1000.00 +groceries -10.15 +restaurant and more foo -15.89 +Transfer to Clothing -50.00 +Total: 923.96 +``` + +Besides the `Category` class, create a function (outside of the class) called `create_spend_chart` that takes a list of categories as an argument. It should return a string that is a bar chart. + +The chart should show the percentage spent in each category passed in to the function. The percentage spent should be calculated only with withdrawals and not with deposits. Down the left side of the chart should be labels 0 - 100. The "bars" in the bar chart should be made out of the "o" character. The height of each bar should be rounded down to the nearest 10. The horizontal line below the bars should go two spaces past the final bar. Each category name should be written vertically below the bar. There should be a title at the top that says "Percentage spent by category". + +This function will be tested with up to four categories. + +Look at the example output below very closely and make sure the spacing of the output matches the example exactly. + +```bash +Percentage spent by category +100| + 90| + 80| + 70| + 60| o + 50| o + 40| o + 30| o + 20| o o + 10| o o o + 0| o o o + ---------- + F C A + o l u + o o t + d t o + h + i + n + g +``` + +# --hints-- + +The `deposit` method should create a specific object in the ledger instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit(self): + self.food.deposit(900, "deposit") + actual = self.food.ledger[0] + expected = {"amount": 900, "description": "deposit"} + self.assertEqual(actual, expected, 'Expected "deposit" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `deposit` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit_no_description(self): + self.food.deposit(45.56) + actual = self.food.ledger[0] + expected = {"amount": 45.56, "description": ""} + self.assertEqual(actual, expected, 'Expected calling "deposit" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should create a specific object in the `ledger` instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": "milk, cereal, eggs, bacon, bread"} + self.assertEqual(actual, expected, 'Expected "withdraw" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `withdraw` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": ""} + self.assertEqual(actual, expected, 'Expected "withdraw" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `True` if the withdrawal took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + self.assertEqual(good_withdraw, True, 'Expected "withdraw" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `food.deposit(900, "deposit")` and `food.withdraw(45.67, "milk, cereal, eggs, bacon, bread")` should return a balance of `854.33`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_get_balance(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.get_balance() + expected = 854.33 + self.assertEqual(actual, expected, 'Expected balance to be 854.33') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `transfer` method on a category object should create a specific ledger item in that category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.food.ledger[2] + expected = {"amount": -transfer_amount, "description": "Transfer to Entertainment"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `True` if the transfer took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + self.assertEqual(good_transfer, True, 'Expected "transfer" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `transfer` on a category object should reduce the balance in the category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + food_balance_before = self.food.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + food_balance_after = self.food.get_balance() + self.assertEqual(food_balance_before - food_balance_after, transfer_amount, 'Expected "transfer" method to reduce balance in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should increase the balance of the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + entertainment_balance_before = self.entertainment.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + entertainment_balance_after = self.entertainment.get_balance() + self.assertEqual(entertainment_balance_after - entertainment_balance_before, transfer_amount, 'Expected "transfer" method to increase balance in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should create a specific ledger item in the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.entertainment.ledger[0] + expected = {"amount": transfer_amount, "description": "Transfer from Food"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `False` if the amount passed to the method is greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(20) + expected = False + self.assertEqual(actual, expected, 'Expected "check_funds" method to be False') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `True` if the amount passed to the method is not greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(10) + expected = True + self.assertEqual(actual, expected, 'Expected "check_funds" method to be True') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `False` if the withdrawal didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_funds(self): + self.food.deposit(100, "deposit") + good_withdraw = self.food.withdraw(100.10) + self.assertEqual(good_withdraw, False, 'Expected "withdraw" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `False` if the transfer didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer_no_funds(self): + self.food.deposit(100, "deposit") + good_transfer = self.food.transfer(200, self.entertainment) + self.assertEqual(good_transfer, False, 'Expected "transfer" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Printing a `Category` instance should give a different string representation of the object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_to_string(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + self.food.transfer(20, self.entertainment) + actual = str(self.food) + expected = "*************Food*************\\ndeposit 900.00\\nmilk, cereal, eggs, bac -45.67\\nTransfer to Entertainme -20.00\\nTotal: 834.33" + self.assertEqual(actual, expected, 'Expected different string representation of object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +` + const out = runPython(testCode); + assert(out); + } +}) +``` + +`create_spend_chart` should print a different chart representation. Check that all spacing is exact. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + self.business = budget.Category("Business") + + def test_create_spend_chart(self): + self.food.deposit(900, "deposit") + self.entertainment.deposit(900, "deposit") + self.business.deposit(900, "deposit") + self.food.withdraw(105.55) + self.entertainment.withdraw(33.40) + self.business.withdraw(10.99) + actual = budget.create_spend_chart([self.business, self.food, self.entertainment]) + expected = "Percentage spent by category\\n100| \\n 90| \\n 80| \\n 70| o \\n 60| o \\n 50| o \\n 40| o \\n 30| o \\n 20| o o \\n 10| o o \\n 0| o o o \\n ----------\\n B F E \\n u o n \\n s o t \\n i d e \\n n r \\n e t \\n s a \\n s i \\n n \\n m \\n e \\n n \\n t " + self.assertEqual(actual, expected, 'Expected different chart representation. Check that all spacing is exact.') +`); + + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Category: + pass + +def create_spend_chart(categories): + pass +``` + +# --solutions-- + +```py +class Category: + + def __init__(self, name): + self.name = name + self.ledger = [] + self.balance = 0 + self.spent = 0 + + def __str__(self): + first_line = f'{self.name.center(30, "*")}\n' + lines = '' + total = f'Total: {format(self.balance, ".2f")}' + + for n in range(len(self.ledger)): + descr = self.ledger[n]["description"][:23] + am = format(float(self.ledger[n]["amount"]), ".2f")[:7] + lines = lines + f'{descr:<23}{am:>7}\n' + + return f'{first_line}{lines}{total}' + + def deposit(self, amount, description=''): + self.ledger.append({ + 'amount': float(amount), + 'description': description + }) + self.balance = self.balance + float(amount) + + def withdraw(self, amount, description=''): + if self.check_funds(amount): + self.ledger.append({ + 'amount': -float(amount), + 'description': description + }) + self.balance = self.balance - float(amount) + self.spent = self.spent + float(amount) + return True + else: + return False + + def get_balance(self): + return self.balance + + def transfer(self, amount, category): + if self.check_funds(amount): + # withdraw + self.ledger.append({ + 'amount': -float(amount), + 'description': f'Transfer to {category.name}' + }) + self.balance = self.balance - float(amount) + # deposit + category.deposit(amount, f'Transfer from {self.name}') + + return True + else: + return False + + def check_funds(self, amount): + if float(amount) > self.balance: + return False + else: + return True + + +def create_spend_chart(categories): + total_expenses = 0 + obj = {} + col1 = [] + str = [] + final_str = 'Percentage spent by category\n' + label_max_length = 0 + label_strings = [] + + for category in categories: + total_expenses = total_expenses + category.spent + obj[category.name] = {'expenses': category.spent} + obj[category.name]['label'] = list(category.name) + if len(obj[category.name]['label']) > label_max_length: + label_max_length = len(obj[category.name]['label']) + + for category in categories: + obj[category.name]['percent'] = ( + (category.spent / total_expenses * 100) // 10) * 10 + obj[category.name]['column'] = [] + for i in range(0, 110, 10): + if obj[category.name]['percent'] >= i: + obj[category.name]['column'].insert(0, 'o') + else: + obj[category.name]['column'].insert(0, ' ') + + for i in range(0, 110, 10): + col1.insert(0, i) + + for i in range(11): + str.append("") + for key in obj: + str[i] += (f'{obj[key]["column"][i]} ') + final_str += f'{col1[i]:>3}| {str[i]}\n' + final_str += f' {"-"*(1+3*len(obj))}\n ' + + for i in range(label_max_length): + label_strings.append(' ') + for k in obj: + if len(obj[k]['label']) < label_max_length: + obj[k]['label'].extend( + f'{" "*(label_max_length-len(obj[k]["label"]))}') + + label_strings[i] += f'{obj[k]["label"][i]} ' + if i < label_max_length - 1: + label_strings[i] += '\n ' + final_str += label_strings[i] + + print(final_str) + return (final_str) + +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md b/curriculum/challenges/german/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md new file mode 100644 index 00000000000..ef719adc3a7 --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md @@ -0,0 +1,869 @@ +--- +id: 5e444147903586ffb414c94f +title: Build a Polygon Area Calculator Project +challengeType: 23 +forumTopicId: 462363 +dashedName: build-a-polygon-area-calculator-project +--- + +# --description-- + +In this project you will use object oriented programming to create a `Rectangle` class and a `Square` class. The `Square` class should be a subclass of `Rectangle`, and inherit its methods and attributes. + +## Rectangle class + +When a Rectangle object is created, it should be initialized with `width` and `height` attributes. The class should also contain the following methods: + +- `set_width` +- `set_height` +- `get_area`: Returns area (`width * height`) +- `get_perimeter`: Returns perimeter (`2 * width + 2 * height`) +- `get_diagonal`: Returns diagonal (`(width ** 2 + height ** 2) ** .5`) +- `get_picture`: Returns a string that represents the shape using lines of "\*". The number of lines should be equal to the height and the number of "\*" in each line should be equal to the width. There should be a new line (`\n`) at the end of each line. If the width or height is larger than 50, this should return the string: "Too big for picture.". +- `get_amount_inside`: Takes another shape (square or rectangle) as an argument. Returns the number of times the passed in shape could fit inside the shape (with no rotations). For instance, a rectangle with a width of 4 and a height of 8 could fit in two squares with sides of 4. + +Additionally, if an instance of a `Rectangle` is represented as a string, it should look like: `Rectangle(width=5, height=10)` + +## Square class + +The `Square` class should be a subclass of `Rectangle`. When a `Square` object is created, a single side length is passed in. The `__init__` method should store the side length in both the `width` and `height` attributes from the `Rectangle` class. + +The `Square` class should be able to access the `Rectangle` class methods but should also contain a `set_side` method. If an instance of a `Square` is represented as a string, it should look like: `Square(side=9)` + +Additionally, the `set_width` and `set_height` methods on the `Square` class should set both the width and height. + +## Usage example + +```py +rect = Rectangle(10, 5) +print(rect.get_area()) +rect.set_height(3) +print(rect.get_perimeter()) +print(rect) +print(rect.get_picture()) + +sq = Square(9) +print(sq.get_area()) +sq.set_side(4) +print(sq.get_diagonal()) +print(sq) +print(sq.get_picture()) + +rect.set_height(8) +rect.set_width(16) +print(rect.get_amount_inside(sq)) +``` + +That code should return: + +```bash +50 +26 +Rectangle(width=10, height=3) +********** +********** +********** + +81 +5.656854249492381 +Square(side=4) +**** +**** +**** +**** + +8 +``` + +# --hints-- + +The `Square` class should be a subclass of the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_subclass(self): + actual = issubclass(shape_calculator.Square, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a subclass of the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `Square` class should be a distinct class from the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_distinct_classes(self): + actual = shape_calculator.Square is not shape_calculator.Rectangle + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a distinct class from the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +A square object should be an instance of the `Square` class and the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_is_square_and_rectangle(self): + actual = isinstance(self.sq, shape_calculator.Square) and isinstance(self.sq, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected square object to be an instance of the Square class and the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Rectangle(3, 6)` should be `Rectangle(width=3, height=6)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_string(self): + actual = str(self.rect) + expected = "Rectangle(width=3, height=6)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle to be "Rectangle(width=3, height=6)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Square(5)` should be `Square(side=5)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_string(self): + actual = str(self.sq) + expected = "Square(side=5)" + self.assertEqual(actual, expected, 'Expected string representation of square to be "Square(side=5)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_area()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_area(self): + actual = self.rect.get_area() + expected = 18 + self.assertEqual(actual, expected, 'Expected area of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_area()` should return `25`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_area(self): + actual = self.sq.get_area() + expected = 25 + self.assertEqual(actual, expected, 'Expected area of square to be 25') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_perimeter()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_perimeter(self): + actual = self.rect.get_perimeter() + expected = 18 + self.assertEqual(actual, expected, 'Expected perimeter of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_perimeter()` should return `20`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_perimeter(self): + actual = self.sq.get_perimeter() + expected = 20 + self.assertEqual(actual, expected, 'Expected perimeter of square to be 20') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_diagonal()` should return `6.708203932499369`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_diagonal(self): + actual = self.rect.get_diagonal() + expected = 6.708203932499369 + self.assertEqual(actual, expected, 'Expected diagonal of rectangle to be 6.708203932499369') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_diagonal()` should return `7.0710678118654755`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_diagonal(self): + actual = self.sq.get_diagonal() + expected = 7.0710678118654755 + self.assertEqual(actual, expected, 'Expected diagonal of square to be 7.0710678118654755') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Rectangle` class should have a different string representation after setting new values. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_set_attributes(self): + self.rect.set_width(7) + self.rect.set_height(8) + actual = str(self.rect) + expected = "Rectangle(width=7, height=8)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle after setting new values to be "Rectangle(width=7, height=8)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_side()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_side(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_width()` or `set_height()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_height(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') + self.sq.set_width(4) + actual = str(self.sq) + expected = "Square(side=4)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting width to be "Square(side=4)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Rectangle` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_picture(self): + self.rect.set_width(7) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "*******\\n*******\\n*******\\n" + self.assertEqual(actual, expected, 'Expected rectangle picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Square` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_picture(self): + self.sq.set_side(2) + actual = self.sq.get_picture() + expected = "**\\n**\\n" + self.assertEqual(actual, expected, 'Expected square picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return the string `Too big for picture.` if the `width` or `height` attributes are larger than `50`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_big_picture(self): + self.rect.set_width(51) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "Too big for picture." + self.assertEqual(actual, expected, 'Expected message: "Too big for picture."') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(15,10).get_amount_inside(Square(5))` should return `6`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + self.sq = shape_calculator.Square(5) + + def test_get_amount_inside(self): + self.rect.set_height(10) + self.rect.set_width(15) + actual = self.rect.get_amount_inside(self.sq) + expected = 6 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 6.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(4,8).get_amount_inside(Rectangle(3, 6))` should return `1`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_two_rectangles(self): + rect2 = shape_calculator.Rectangle(4, 8) + actual = rect2.get_amount_inside(self.rect) + expected = 1 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 1.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(2,3).get_amount_inside(Rectangle(3, 6))` should return `0`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_none(self): + rect2 = shape_calculator.Rectangle(2, 3) + actual = rect2.get_amount_inside(self.rect) + expected = 0 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 0.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Rectangle: + pass + +class Square: + pass +``` + +# --solutions-- + +```py +class Rectangle: + def __init__(self, width, height): + self.width = width + self.height = height + + def __str__(self): + return f'Rectangle(width={self.width}, height={self.height})' + + def set_width(self, width): + self.width = width + + def set_height(self, height): + self.height = height + + def get_area(self): + area = self.width * self.height + return area + + def get_perimeter(self): + perimeter = self.width * 2 + self.height * 2 + return perimeter + + def get_diagonal(self): + diagonal = (self.width ** 2 + self.height ** 2) ** 0.5 + return diagonal + + def get_picture(self): + if self.width < 50 and self.height < 50: + picture = f'{"*"*self.width}\n'*self.height + return picture + else: + return 'Too big for picture.' + + def get_amount_inside(self, polygon): + h_number = self.height // polygon.height + w_number = self.width // polygon.width + repetition = h_number * w_number + return repetition + + +class Square(Rectangle): + def __init__(self, side): + self.width = side + self.height = side + + def __str__(self): + return f'Square(side={self.width})' + + def set_width(self, side): + self.width = side + self.height = side + + def set_height(self, side): + self.height = side + self.width = side + + def set_side(self,side): + self.width = side + self.height = side + +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md b/curriculum/challenges/german/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md new file mode 100644 index 00000000000..94cf5c682de --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md @@ -0,0 +1,300 @@ +--- +id: 5e44414f903586ffb414c950 +title: Build a Probability Calculator Project +challengeType: 23 +forumTopicId: 462364 +dashedName: build-a-probability-calculator-project +--- + +# --description-- + +Suppose there is a hat containing 5 blue balls, 4 red balls, and 2 green balls. What is the probability that a random draw of 4 balls will contain at least 1 red ball and 2 green balls? While it would be possible to calculate the probability using advanced mathematics, an easier way is to write a program to perform a large number of experiments to estimate an approximate probability. + +For this project, you will write a program to determine the approximate probability of drawing certain balls randomly from a hat. + +First, create a `Hat` class in `main.py`. The class should take a variable number of arguments that specify the number of balls of each color that are in the hat. For example, a class object could be created in any of these ways: + +```py +hat1 = Hat(yellow=3, blue=2, green=6) +hat2 = Hat(red=5, orange=4) +hat3 = Hat(red=5, orange=4, black=1, blue=0, pink=2, striped=9) +``` + +A hat will always be created with at least one ball. The arguments passed into the hat object upon creation should be converted to a `contents` instance variable. `contents` should be a list of strings containing one item for each ball in the hat. Each item in the list should be a color name representing a single ball of that color. For example, if your hat is `{"red": 2, "blue": 1}`, `contents` should be `["red", "red", "blue"]`. + +The `Hat` class should have a `draw` method that accepts an argument indicating the number of balls to draw from the hat. This method should remove balls at random from `contents` and return those balls as a list of strings. The balls should not go back into the hat during the draw, similar to an urn experiment without replacement. If the number of balls to draw exceeds the available quantity, return all the balls. + +Next, create an `experiment` function in `main.py` (not inside the `Hat` class). This function should accept the following arguments: + +- `hat`: A hat object containing balls that should be copied inside the function. +- `expected_balls`: An object indicating the exact group of balls to attempt to draw from the hat for the experiment. For example, to determine the probability of drawing 2 blue balls and 1 red ball from the hat, set `expected_balls` to `{"blue":2, "red":1}`. +- `num_balls_drawn`: The number of balls to draw out of the hat in each experiment. +- `num_experiments`: The number of experiments to perform. (The more experiments performed, the more accurate the approximate probability will be.) + +The `experiment` function should return a probability. + +For example, if you want to determine the probability of getting at least two red balls and one green ball when you draw five balls from a hat containing six black, four red, and three green. To do this, you will perform `N` experiments, count how many times `M` you get at least two red balls and one green ball, and estimate the probability as `M/N`. Each experiment consists of starting with a hat containing the specified balls, drawing several balls, and checking if you got the balls you were attempting to draw. + +Here is how you would call the `experiment` function based on the example above with 2000 experiments: + +```py +hat = Hat(black=6, red=4, green=3) +probability = experiment(hat=hat, + expected_balls={"red":2,"green":1}, + num_balls_drawn=5, + num_experiments=2000) +``` + +The output would be something like this: + +```bash +0.356 +``` + +Since this is based on random draws, the probability will be slightly different each time the code is run. + +_Hint: Consider using the modules that are already imported at the top. Do not initialize random seed within the file._ + + +# --hints-- + +Creation of `hat` object should add correct contents. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_class_contents(self): + hat = probability_calculator.Hat(red=3,blue=2) + actual = hat.contents + expected = ["red","red","red","blue","blue"] + self.assertEqual(actual, expected, 'Expected creation of hat object to add correct contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method in `hat` class should reduce number of items in contents. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw(self): + hat = probability_calculator.Hat(red=5,blue=2) + actual = hat.draw(2) + expected = ['blue', 'red'] + self.assertEqual(actual, expected, 'Expected hat draw to return two random items from hat contents.') + actual = len(hat.contents) + expected = 5 + self.assertEqual(actual, expected, 'Expected hat draw to reduce number of items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method should behave correctly when the number of balls to extract is bigger than the number of balls in the hat. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw_2(self): + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + actual = hat.draw(20) + expected = ['yellow', 'yellow', 'yellow', 'yellow', 'yellow', 'red', 'green', 'green', 'green', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'test'] + self.assertEqual(actual, expected, 'Expected hat draw to return all items from hat contents.') + actual = len(hat.contents) + expected = 0 + self.assertEqual(actual, expected, 'Expected hat draw to leave no items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `experiment` method should return a different probability. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_prob_experiment(self): + hat = probability_calculator.Hat(blue=3,red=2,green=6) + probability = probability_calculator.experiment(hat=hat, expected_balls={"blue":2,"green":1}, num_balls_drawn=4, num_experiments=1000) + actual = probability + expected = 0.272 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + probability = probability_calculator.experiment(hat=hat, expected_balls={"yellow":2,"blue":3,"test":1}, num_balls_drawn=20, num_experiments=100) + actual = probability + expected = 1.0 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +# --seed-- + +## --seed-contents-- + +```py +import copy +import random + +class Hat: + pass + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + pass +``` + +# --solutions-- + +```py +import copy +import random + +class Hat: + def __init__(self, **hat): + self.hat = hat + contents = [] + for i in hat: + for j in range(hat[i]): + contents.append(i) + self.contents = contents + + + def draw(self, number): + drawn = [] + if number >= len(self.contents): + drawn.extend(self.contents) + self.contents = [] + else: + for i in range(number): + drawn.append( + self.contents.pop(random.randrange(len(self.contents))) + ) + return drawn + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + expected_balls_list = [] + drawn_list = [] + success = 0 + for i in expected_balls: + for j in range(expected_balls[i]): + expected_balls_list.append(i) + for j in range(num_experiments): + hat_copy = copy.deepcopy(hat) + drawn_list.append(hat_copy.draw(num_balls_drawn)) + exp_ball_list_copy = expected_balls_list[:] + for k in range(len(drawn_list[j])): + try: + ind = exp_ball_list_copy.index(drawn_list[j][k]) + exp_ball_list_copy.pop(ind) + except: + continue + if len(exp_ball_list_copy) == 0: + success += 1 + probability = success/num_experiments + return probability +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md b/curriculum/challenges/german/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md new file mode 100644 index 00000000000..05e60f0b74a --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md @@ -0,0 +1,582 @@ +--- +id: 5e444136903586ffb414c94d +title: Build a Time Calculator Project +challengeType: 23 +forumTopicId: 462360 +dashedName: build-a-time-calculator-project +--- + +# --description-- + +Write a function named `add_time` that takes in two required parameters and one optional parameter: + +- a start time in the 12-hour clock format (ending in AM or PM) +- a duration time that indicates the number of hours and minutes +- (optional) a starting day of the week, case insensitive + +The function should add the duration time to the start time and return the result. + +If the result will be the next day, it should show `(next day)` after the time. If the result will be more than one day later, it should show `(n days later)` after the time, where "n" is the number of days later. + +If the function is given the optional starting day of the week parameter, then the output should display the day of the week of the result. The day of the week in the output should appear after the time and before the number of days later. + +Below are some examples of different cases the function should handle. Pay close attention to the spacing and punctuation of the results. + +```py +add_time('3:00 PM', '3:10') +# Returns: 6:10 PM + +add_time('11:30 AM', '2:32', 'Monday') +# Returns: 2:02 PM, Monday + +add_time('11:43 AM', '00:20') +# Returns: 12:03 PM + +add_time('10:10 PM', '3:30') +# Returns: 1:40 AM (next day) + +add_time('11:43 PM', '24:20', 'tueSday') +# Returns: 12:03 AM, Thursday (2 days later) + +add_time('6:30 PM', '205:12') +# Returns: 7:42 AM (9 days later) +``` + +Do not import any Python libraries. Assume that the start times are valid times. The minutes in the duration time will be a whole number less than 60, but the hour can be any whole number. + +# --hints-- +Calling `add_time('3:30 PM', '2:12')` should return `'5:42 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +import time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period(self): + actual = time_calculator.add_time("3:30 PM", "2:12") + expected = "5:42 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12" to return "5:42 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:55 AM', '3:12')` should return `'3:07 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_different_period(self): + actual = time_calculator.add_time("11:55 AM", "3:12") + expected = "3:07 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:55 AM", "3:12" to return "3:07 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected time to end with `'(next day)'` when it is the next day. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_next_day(self): + actual = time_calculator.add_time("9:15 PM", "5:30") + expected = "2:45 AM (next day)" + self.assertEqual(actual, expected, 'Expected time to end with "(next day)" when it is the next day.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected period to change from `AM` to `PM` at `12:00`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_period_change_at_twelve(self): + actual = time_calculator.add_time("11:40 AM", "0:25") + expected = "12:05 PM" + self.assertEqual(actual, expected, 'Expected period to change from AM to PM at 12:00') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00')` should return `'2:59 AM (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four(self): + actual = time_calculator.add_time("2:59 AM", "24:00") + expected = "2:59 AM (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00" to return "2:59 AM (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05')` should return `'12:04 AM (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later(self): + actual = time_calculator.add_time("11:59 PM", "24:05") + expected = "12:04 AM (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05" to return "12:04 AM (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02')` should return `'6:18 AM (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration(self): + actual = time_calculator.add_time("8:16 PM", "466:02") + expected = "6:18 AM (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02" to return "6:18 AM (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected adding `0:00` to return the initial time. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_no_change(self): + actual = time_calculator.add_time("5:01 AM", "0:00") + expected = "5:01 AM" + self.assertEqual(actual, expected, 'Expected adding 0:00 to return initial time.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('3:30 PM', '2:12', 'Monday')`should return `'5:42 PM, Monday'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period_with_day(self): + actual = time_calculator.add_time("3:30 PM", "2:12", "Monday") + expected = "5:42 PM, Monday" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12", "Monday" to return "5:42 PM, Monday"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00', 'saturDay')` should return `'2:59 AM, Sunday (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four_with_day(self): + actual = time_calculator.add_time("2:59 AM", "24:00", "saturDay") + expected = "2:59 AM, Sunday (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00", "saturDay" to return "2:59 AM, Sunday (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05', 'Wednesday')` should return `'12:04 AM, Friday (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later_with_day(self): + actual = time_calculator.add_time("11:59 PM", "24:05", "Wednesday") + expected = "12:04 AM, Friday (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05", "Wednesday" to return "12:04 AM, Friday (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02', 'tuesday')`should return `'6:18 AM, Monday (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration_with_day(self): + actual = time_calculator.add_time("8:16 PM", "466:02", "tuesday") + expected = "6:18 AM, Monday (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02", "tuesday" to return "6:18 AM, Monday (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def add_time(start, duration): + + + + + + return new_time +``` + +# --solutions-- + +```py +def add_time(start, duration, day=''): + start_arr = start[0:-3].split(':') + dur_arr = duration.split(':') + tail = '' + # converting to 24h format + if 'AM' in start: + if start_arr[0] == '12': + start_arr[0] = '00' + elif 'PM' in start: + if start_arr[0] == '12': + start_arr[0] = '12' + else: + start_arr[0] = f'{int(start_arr[0]) + 12}' + + # adding minutes + sum_m = int(start_arr[1]) + int(dur_arr[1]) + if sum_m > 59: + + if (sum_m - 60 * (sum_m//60)) < 10: + mins = f'0{(sum_m - 60 * (sum_m//60))}' + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + + else: + mins = sum_m - 60 * (sum_m//60) + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + else: + if sum_m < 10: + mins = f'0{sum_m}' + else: + mins = sum_m + + #adding hours + sum_h = int(start_arr[0]) + int(dur_arr[0]) + if sum_h < 24: + hours= sum_h + #time_24 = f'{hours}:{mins}' + else: + days_after = sum_h//24 + if days_after == 1: + hours = sum_h - 24 + tail = ' (next day)' + else: + hours = sum_h - 24 * days_after + tail = f' ({days_after} days later)' + + #converting back to AM/PM + if hours == 0: + hours = 12 + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + elif hours < 12: + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + else: + if hours > 12: + hours = hours - 12 + time = f'{hours}:{mins} PM' + final_time = f'{time}{tail}' + + #days of the week + week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] + if day: + day = day.capitalize() + if not tail: + final_time = f'{time}, {day}' + elif tail == ' (next day)': + index = week.index(day) + 1 + if index == 7: + index = 0 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + elif tail: + index = (week.index(day) + days_after) % 7 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + + + print('\n') + print(final_time) + print('\n') + return final_time + +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md b/curriculum/challenges/german/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md new file mode 100644 index 00000000000..4f112fd73c5 --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md @@ -0,0 +1,248 @@ +--- +id: 5e44412c903586ffb414c94c +title: Build an Arithmetic Formatter Project +challengeType: 23 +forumTopicId: 462359 +dashedName: build-an-arithmetic-formatter-project +--- + +# --description-- + +Students in primary school often arrange arithmetic problems vertically to make them easier to solve. For example, "235 + 52" becomes: + +```py + 235 ++ 52 +----- +``` + +Finish the `arithmetic_arranger` function that receives a list of strings which are arithmetic problems, and returns the problems arranged vertically and side-by-side. The function should optionally take a second argument. When the second argument is set to `True`, the answers should be displayed. + +## Example + +Function Call: + +```py +arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"]) +``` + +Output: + +```py + 32 3801 45 123 ++ 698 - 2 + 43 + 49 +----- ------ ---- ----- +``` + +Function Call: + +```py +arithmetic_arranger(["32 + 8", "1 - 3801", "9999 + 9999", "523 - 49"], True) +``` + +Output: + +```py + 32 1 9999 523 ++ 8 - 3801 + 9999 - 49 +---- ------ ------ ----- + 40 -3800 19998 474 +``` + +## Rules + +The function will return the correct conversion if the supplied problems are properly formatted, otherwise, it will **return** a **string** that describes an error that is meaningful to the user. + +- Situations that will return an error: + - If there are **too many problems** supplied to the function. The limit is **five**, anything more will return: `'Error: Too many problems.'` + - The appropriate operators the function will accept are **addition** and **subtraction**. Multiplication and division will return an error. Other operators not mentioned in this bullet point will not need to be tested. The error returned will be: `"Error: Operator must be '+' or '-'."` + - Each number (operand) should only contain digits. Otherwise, the function will return: `'Error: Numbers must only contain digits.'` + - Each operand (aka number on each side of the operator) has a max of four digits in width. Otherwise, the error string returned will be: `'Error: Numbers cannot be more than four digits.'` +- If the user supplied the correct format of problems, the conversion you return will follow these rules: + - There should be a single space between the operator and the longest of the two operands, the operator will be on the same line as the second operand, both operands will be in the same order as provided (the first will be the top one and the second will be the bottom). + - Numbers should be right-aligned. + - There should be four spaces between each problem. + - There should be dashes at the bottom of each problem. The dashes should run along the entire length of each problem individually. (The example above shows what this should look like.) + +# --hints-- + +`arithmetic_arranger(["3801 - 2", "123 + 49"])` should return `3801 123\n- 2 + 49\n------ -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3801 - 2", "123 + 49"]), ' 3801 123\\n- 2 + 49\\n------ -----')`); + } +}) +``` + +`arithmetic_arranger(["1 + 2", "1 - 9380"])` should return `1 1\n+ 2 - 9380\n--- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["1 + 2", "1 - 9380"]), ' 1 1\\n+ 2 - 9380\\n--- ------')`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `3 3801 45 123\n+ 855 - 2 + 43 + 49\n----- ------ ---- -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]), ' 3 3801 45 123\\n+ 855 - 2 + 43 + 49\\n----- ------ ---- -----')`); + } +}) +``` + +`arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"])` should return `11 3801 1 123 1\n+ 4 - 2999 + 2 + 49 - 9380\n---- ------ --- ----- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"]), ' 11 3801 1 123 1\\n+ 4 - 2999 + 2 + 49 - 9380\\n---- ------ --- ----- ------')`); + } +}) +``` + +`arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"])` should return `'Error: Too many problems.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"]), 'Error: Too many problems.')`); + } +}) +``` + +`arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `"Error: Operator must be '+' or '-'."`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Operator must be '+' or '-'.")`); + } +}) +``` + +`arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers cannot be more than four digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers cannot be more than four digits.")`); + } +}) +``` + +`arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers must only contain digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers must only contain digits.")`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "988 + 40"], True)` should return `3 988\n+ 855 + 40\n----- -----\n 858 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "988 + 40"], True), " 3 988\\n+ 855 + 40\\n----- -----\\n 858 1028")`); + } +}) +``` + +`arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True)` should return `32 1 45 123 988\n- 698 - 3801 + 43 + 49 + 40\n----- ------ ---- ----- -----\n -666 -3800 88 172 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True), " 32 1 45 123 988\\n- 698 - 3801 + 43 + 49 + 40\\n----- ------ ---- ----- -----\\n -666 -3800 88 172 1028")`); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def arithmetic_arranger(problems, show_answers=False): + + return problems + +print(f'\n{arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"])}') +``` + +# --solutions-- + +```py +def arithmetic_arranger(problems, result=False): + + lin1 = "" + lin2 = "" + lin3 = "" + lin4 = "" + + if len(problems) > 5: + return 'Error: Too many problems.' + for problem in problems: + [num1, sym, num2] = problem.split() + sign = ['+', '-'] + if sym not in sign: + return ("Error: Operator must be '+' or '-'.") + if len(num1) > 4 or len(num2) > 4: + return ("Error: Numbers cannot be more than four digits.") + if not num1.isnumeric() or not num2.isnumeric(): + return ("Error: Numbers must only contain digits.") + + lin1 += " " + num1 + " " if len(num1) >= len( + num2) else " " * (len(num2) + 2 - len(num1)) + num1 + " " + lin2 += sym + " " + num2 + " " if len(num2) >= len( + num1) else sym + " " * (len(num1) - len(num2) + 1) + num2 + " " + nmax = (len(num1) + 2) if len(num1) >= len(num2) else (len(num2) + 2) + lin3 += "-" * nmax + " " + op = int(num1) + int(num2) if sym == "+" else int(num1) - int(num2) + lin4 += (" " * (nmax - len(str(op)))) + str(op) + " " + + arranged_problems = lin1.rstrip() + "\n" + lin2.rstrip( + ) + "\n" + lin3.rstrip() + if result: + arranged_problems += "\n" + lin4.rstrip() + + return arranged_problems +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md index 9c45e102954..c17c69cd7b9 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md @@ -23,7 +23,7 @@ Add a new key-value pair to your dictionary. Use the string `species` as the key You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 1 `)) }) @@ -32,7 +32,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have a `species` key with the value `guinea pig` inside your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig"} `)) }) diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md index 5604d8a8138..641abd8129c 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md @@ -14,7 +14,7 @@ Now, replace the existent keys with the strings `A` and `B` — one for each nod Your dictionary should have an `A` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "A" in my_graph `)) }) @@ -23,7 +23,7 @@ Your dictionary should have an `A` key. Your `A` key should have `B` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -32,7 +32,7 @@ Your `A` key should have `B` as the value. Your dictionary should have an `B` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "B" in my_graph `)) }) @@ -41,7 +41,7 @@ Your dictionary should have an `B` key. Your `B` key should have `A` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["B"] == "A" `)) }) @@ -50,7 +50,7 @@ Your `B` key should have `A` as the value. Your dictionary should have two keys. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph) == 2 `)) }) diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md index a8b6035f7a8..7e0c52f2a5a 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md @@ -16,7 +16,7 @@ Modify your existing dictionary to represent this arrangement. Use a list to rep Your dictionary should have 3 keys — `A`, `B`, and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C"] len(my_graph) == 3 and all(key in my_graph for key in key_list) `)) @@ -26,7 +26,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["A"]` should have the `B` node as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -35,7 +35,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -44,7 +44,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. The value of `my_graph["B"]` should be a list containing the other two nodes. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -53,7 +53,7 @@ The value of `my_graph["B"]` should be a list containing the other two nodes. The value of `my_graph["C"]` should be the connected node. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["C"] == "B" `)) }) diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md index 0f378bcd572..66a87a6e95e 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md @@ -14,7 +14,7 @@ Add one last node, `D`, which is connected with `A` and `C`. Modify your diction Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -24,7 +24,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list `)) }) @@ -33,7 +33,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["A"]) == 2 and "B" in my_graph["A"] and "D" in my_graph["A"] `)) }) @@ -42,7 +42,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -51,7 +51,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -60,7 +60,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list `)) }) @@ -69,7 +69,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["C"]) == 2 and "B" in my_graph["C"] and "D" in my_graph["C"] `)) }) @@ -78,7 +78,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list `)) }) @@ -87,7 +87,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["D"]) == 2 and "A" in my_graph["D"] and "C" in my_graph["D"] `)) }) diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md index b2e399a6927..c7452c77246 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md @@ -27,7 +27,7 @@ Modify `my_graph["A"]` into a list of tuples, considering the following distance Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -37,7 +37,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list and all(type(i) is tuple for i in my_graph["A"]) `)) }) @@ -46,7 +46,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 3), ("D", 1)] len(my_graph["A"]) == 2 and all(t in my_graph["A"] for t in tuples) `)) diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md index f0375184c6d..4542471964f 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md @@ -16,7 +16,7 @@ Declare an empty function called `shortest_path` and don't forget the `pass` key You should have a `shortest_path` function. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect inspect.isfunction(shortest_path) `)) diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md index f4720ea8186..c0f994a7d88 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md @@ -16,7 +16,7 @@ For that your function needs two parameters: `graph`, and `start`. Add them to y Your function should accept `graph` and `start` as the parameters, in this order. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == '(graph, start)' diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md index 6fd3ba3f1a9..e27a0353d81 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md @@ -22,7 +22,7 @@ Your function should take three parameters:`graph`, `start`, and `target`. The o The `target` parameter should have the default value of an empty string. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == "(graph, start, target='')" diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md index 5b2a8395a10..b1301a76865 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md @@ -14,7 +14,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list and all(type(i) is tuple for i in my_graph["B"]) `)) }) @@ -23,7 +23,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 3), ("C", 4)] len(my_graph["B"]) == 2 and all(t in my_graph["B"] for t in tuples) `)) diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md index 3722f97106d..5f8d8267650 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md @@ -14,7 +14,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list and all(type(i) is tuple for i in my_graph["C"]) `)) }) @@ -23,7 +23,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 4), ("D", 7)] len(my_graph["C"]) == 2 and all(t in my_graph["C"] for t in tuples) `)) @@ -33,7 +33,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list and all(type(i) is tuple for i in my_graph["D"]) `)) }) @@ -42,7 +42,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 1), ("C", 7)] len(my_graph["D"]) == 2 and all(t in my_graph["D"] for t in tuples) `)) diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md index 1a4676a7fd7..6cd25bd52bc 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md @@ -25,7 +25,7 @@ Now, you are going to test your function with another graph. Change `my_graph` i You should modify `my_graph` into the provided graph. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` g = { 'A': [('B', 5), ('C', 3), ('E', 11)], 'B': [('A', 5), ('C', 1), ('F', 2)], diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md index 0dafafd5753..cbc5b7501b7 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md @@ -27,7 +27,7 @@ You should have a variable called `copper`. Your `copper` variable should have the value of an empty dictionary. Use a pair of curly braces for that. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {} `)) }) diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md index dc79489b7cb..5c3e583cafa 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md @@ -16,7 +16,7 @@ Add another key `age` to your dictionary and give it the integer number `2` as v You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 2 `)) }) @@ -25,7 +25,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have an `age` key with the value `2` just after `'species': 'guinea pig'`, inside your `copper` dictionary. Don't forget the comma. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md index 36aca4f6804..1ad0e4d90a2 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md @@ -25,7 +25,7 @@ After your dictionary, follow the example above to access the `species` key of ` You should not modify your dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md index cecf2e5fa6f..5996b6a58a3 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md @@ -24,7 +24,7 @@ You should rename your `copper` dictionary into `my_graph`. Your `my_graph` variable should be a dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph) is dict `)) }) diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md index f894c7370f1..449698597b9 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md @@ -16,7 +16,7 @@ Your `merge_sort` function should take a single parameter: `array`. ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('merge_sort'))) == '(array)' + str(inspect.signature(merge_sort)) == '(array)' `)) }) ``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md index 8bb4030b3db..4a3f46f27b3 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md @@ -19,13 +19,9 @@ You should create an `if` statement to check if `len(array) <= 1`. Don't forget ```js ({ - test: () => { - const transformedCode = code.replace(/\r/g, ""); - const merge_sort = __helpers.python.getDef("\n" + transformedCode, "merge_sort"); - const { function_body } = merge_sort; - - assert.match(function_body, /if\s+len\(\s*array\s*\)\s*<=\s*1:\s*pass/); - } + test: () => assert(runPython(` + _Node(_code).find_function("merge_sort").find_ifs()[0].find_conditions()[0].is_equivalent("len(array) <= 1") + `)) }) ``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md index 398786f17c4..1d97a9467e0 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md @@ -22,13 +22,11 @@ Use the `pass` keyword in the body of the `if` statement. Your `if` statement should check if `__name__` has a value of `'__main__'` ```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:/); -``` - -You should have the `pass` keyword in the body of your `if` statement - -```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:\s*[^}]*\bpass\b/); +({ + test: () => assert(runPython(` + _Node(_code).find_ifs()[0].find_conditions()[0].is_equivalent("__name__ == '__main__'") + `)) +}) ``` # --seed-- diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md index c80f44ac13e..7fa362745d9 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md @@ -25,7 +25,6 @@ Your `rods` variable should be an empty dictionary. ```js ({ test: () => assert(runPython(` - rods = __locals.get("rods") rods == {} `)) }) diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md index e1ceb8ff56d..ecf684f8911 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md @@ -19,8 +19,7 @@ You should use the `range()` function to assign a sequence of numbers to `rods[' ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - type(a['A']) is range + type(rods['A']) is range `)) }) ``` @@ -29,8 +28,7 @@ You should use the `range()` function to assign the sequence of numbers from `3` ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == range(3, 0, -1) + rods['A'] == range(3, 0, -1) `)) }) ``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md index a9ab2e9f06a..6b6a8edce4d 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md @@ -17,8 +17,7 @@ You should pass your `range()` call to the `list()` function. ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == list(range(3, 0, -1)) + rods['A'] == list(range(3, 0, -1)) `)) }) ``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md index 236df0f53d0..9813d2cda5d 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md @@ -23,7 +23,7 @@ You should declare an empty function named `move`. Remember to use the `pass` ke ({ test: () => { assert(runPython(` import inspect - inspect.isfunction(__locals.get('move')) + inspect.isfunction(move) `)) } }) diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md index 5f2257de4f7..5669579ecd1 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md @@ -23,9 +23,8 @@ The value of `number_of_moves` should be the expression to calculate the number ```js ({ test: () => { - assert(runPython(` - a = __locals.get('NUMBER_OF_DISKS') - __locals.get('number_of_moves') == 2**a -1 + assert(runPython(` + number_of_moves == 2**NUMBER_OF_DISKS -1 `)) } }) ``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md index 1e7c4b64e7a..526f8cf0a6d 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md @@ -16,7 +16,7 @@ You should declare an empty function named `make_allowed_move`. Remember to use ```js ({ test: () => assert(runPython(` import inspect - inspect.isfunction(__locals.get('make_allowed_move')) + inspect.isfunction(make_allowed_move) `)) }) ``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md index 746a6bf3437..5509e22fede 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md @@ -16,7 +16,7 @@ Your `make_allowed_move()` function should have two parameters named `rod1` and ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('make_allowed_move'))) == '(rod1, rod2)' + str(inspect.signature(make_allowed_move)) == '(rod1, rod2)' `)) }) ``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md index e7f11d2ba5a..ced7cbe9b86 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md @@ -14,16 +14,14 @@ The `rods` dictionary will represent the three rods with their disks. Give it th Your `rods` dictionary should have an `'A'` key. ```js -({ test: () => assert(runPython(`'A' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'A' in rods`)) }) ``` `rods['A']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['A'] == [] + rods['A'] == [] `)) }) ``` @@ -31,16 +29,14 @@ Your `rods` dictionary should have an `'A'` key. Your `rods` dictionary should have a `'B'` key. ```js -({ test: () => assert(runPython(`'B' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'B' in rods`)) }) ``` `rods['B']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['B'] == [] + rods['B'] == [] `)) }) ``` @@ -48,16 +44,14 @@ Your `rods` dictionary should have a `'B'` key. Your `rods` dictionary should have a `'C'` key. ```js -({ test: () => assert(runPython(`'C' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'C' in rods`)) }) ``` `rods['C']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['C'] == [] + rods['C'] == [] `)) }) ``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md index 951423828c3..133a7b34934 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md @@ -22,7 +22,7 @@ Your `move()` function should have `n`, `source`, `auxiliary`, and `target` as t ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('move'))) == '(n, source, auxiliary, target)' + str(inspect.signature(move)) == '(n, source, auxiliary, target)' `)) }) ``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md index e708c048908..827553c1673 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md @@ -17,9 +17,8 @@ You should reduce the indentation level of all the code after the `return` state ```js ({ test: () => assert(runPython(` - hanoi = __locals.get("move") a, b, c = [3, 2, 1], [], [] - hanoi(3, a, b, c) + move(3, a, b, c) a == [] and b == [] and c == [3, 2, 1] `)) }) diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md index 16e7b5b68ed..00efcbb8726 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md @@ -23,9 +23,8 @@ You should add `direction` as the third parameter of your function. ```js ({ test: () => assert(runPython(` - import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + import inspect + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction)' `)) }) diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md index 74562ae26a5..d19dc6dbe27 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md @@ -24,8 +24,7 @@ You should declare a new function called `encrypt`. Remember to use the `pass` k ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - inspect.isfunction(f) + inspect.isfunction(encrypt) `)) }) ``` @@ -35,8 +34,7 @@ Your `encrypt` function should take `message` and `key` as the parameters. The o ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - sig = inspect.signature(f) + sig = inspect.signature(encrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md index fa091717efb..b7357c63760 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md @@ -16,8 +16,7 @@ You should define a new function called `decrypt`. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - inspect.isfunction(f) + inspect.isfunction(decrypt) `)) }) ``` @@ -27,8 +26,7 @@ Your `decrypt` function should take `message` and `key` as the parameters. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - sig = inspect.signature(f) + sig = inspect.signature(decrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md index 19fcb7ee6a3..f719d77790e 100644 --- a/curriculum/challenges/german/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md @@ -23,8 +23,7 @@ The `direction` parameter of your `vigenere` function should have a default valu ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction=1)' `)) }) diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md new file mode 100644 index 00000000000..733f024fa29 --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md @@ -0,0 +1,39 @@ +--- +id: 65ef181dad3d96b14a21a03e +title: Step 1 +challengeType: 20 +dashedName: step-1 +--- + +# --description-- + +In this project, you will find the approximate square root of a given number using the bisection method. + +The bisection method is a technique for finding the roots of a real-valued function. It works by narrowing down an interval where the square root lies until it converges to a value within a specified tolerance. + +Begin by creating a function named `square_root_bisection`. Leave the parameters empty for now. + +# --hints-- + +You should define the function `square_root_bisection` with no parameters. + +```js +({ + test: () => { + assert(runPython(` + import inspect + inspect.isfunction(square_root_bisection) + `)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md new file mode 100644 index 00000000000..f5091e5a2c6 --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md @@ -0,0 +1,38 @@ +--- +id: 65ef190c6b51e9b5a5f7ed29 +title: Step 2 +challengeType: 20 +dashedName: step-2 +--- + +# --description-- + +Give the `square_root_bisection` method the following parameters: + +- `square_target`: The number for which you want to find the square root. +- `tolerance` (optional): The acceptable difference between the square of the approximate root value and the actual target value (default is `1e-7`). The tolerance `1e-7` implies that the solution will be accurate to within `0.0000001` of the true value and is a good default choice that balances accuracy and performance. +- `max_iterations` (optional): The maximum number of iterations to perform (default is `100`). If the method doesn't converge within this limit, you'll assume the solution is not found. + +# --hints-- + +Your function should have these parameters: `square_target`, `tolerance = 1e-7`, and `max_iterations = 100`. The order matters. + +```js +({ + test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").has_args("square_target, tolerance=1e-7, max_iterations=100")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py + +--fcc-editable-region-- +def square_root_bisection(): + pass +--fcc-editable-region-- + +``` + diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md new file mode 100644 index 00000000000..77628582774 --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md @@ -0,0 +1,46 @@ +--- +id: 65ef19425d1b27b6c930bae6 +title: Step 3 +challengeType: 20 +dashedName: step-3 +--- + +# --description-- + +If the number for which you want to find the square root is negative, the code should raise an error as the square root of a negative number is not defined in real numbers. + +Remove the `pass` statement and create an `if` statement to check if `square_target` is less than `0`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").has_pass()`)) + } +}) +``` + +You should create an `if` statement to check if `square_target < 0`. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_if("square_target < 0").is_empty()`)) + + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance = 1e-7, max_iterations = 100): + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md new file mode 100644 index 00000000000..20f407dfd2a --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md @@ -0,0 +1,46 @@ +--- +id: 65ef198fde24dfb7ff675b42 +title: Step 4 +challengeType: 20 +dashedName: step-4 +--- + +# --description-- + +If the `square_target` is less than `0`, raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'`. Don't forget to remove the `pass` keyword. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'` inside the `if` body. + +```js +({ + test: () => { + + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].is_equivalent("raise ValueError('Square root of negative number is not defined in real numbers')")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md new file mode 100644 index 00000000000..f31f83a0ed3 --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md @@ -0,0 +1,38 @@ +--- +id: 65ef19ec318e2fb9066381e3 +title: Step 5 +challengeType: 20 +dashedName: step-5 +--- + +# --description-- + +You'll create separate cases for when `square_target` is `0` or `1`. + +Begin by creating an `if` statement to check if `square_target` is equal to `1`. + +# --hints-- + +You should create an `if` statement to check that `square_target == 1`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[0].is_equivalent("square_target == 1")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md new file mode 100644 index 00000000000..927a215705a --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md @@ -0,0 +1,51 @@ +--- +id: 65ef1a1fcb527bba0ca82ccf +title: Step 6 +challengeType: 20 +dashedName: step-6 +--- + +# --description-- + +If the `square_target` is equal to `1`, declare a variable `root` and assign it the value `1` . Also, print the message `'The square root of {square_target} is 1'`. Remember to format the message using an f-string. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should assign the value `1` to the `root` variable and print the message `'The square root of {square_target} is 1'` inside the `if` body. + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].is_equivalent("root = 1\\nprint(f'The square root of {square_target} is 1')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md new file mode 100644 index 00000000000..9ba5f5b573f --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md @@ -0,0 +1,55 @@ +--- +id: 65ef1a50049cf9bada13266f +title: Step 7 +challengeType: 20 +dashedName: step-7 +--- + +# --description-- + +Create an `elif` statement to check if `square_target` is equal to `0`. If it is, assign the value `0` to the `root` variable. Also, print the message `'The square root of {square_target} is 0'`. Remember to format the message using an f-string. + +# --hints-- + +You should have an `elif` statement to check the condition `square_target == 0`. + + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[1].is_equivalent("square_target == 0")`)); + } +}) + +``` + +You should assign the value `0` to the `root` variable and pass the argument `f'The square root of {square_target} is 0'` to a `print` call. + + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[1].is_equivalent("root = 0\\nprint(f'The square root of {square_target} is 0')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md new file mode 100644 index 00000000000..0fb10817783 --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md @@ -0,0 +1,45 @@ +--- +id: 65ef1a720d6e65bbb0d22463 +title: Step 8 +challengeType: 20 +dashedName: step-8 +--- + +# --description-- +Next, you are going to work on the cases where the `square_target` is a positive number apart from `1` or `0`. + +Create an `else` clause to handle these cases. + +# --hints-- + +Create an `else` clause and do not forget to add a `pass` keyword. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[2] == _Node()`)) + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md new file mode 100644 index 00000000000..8f10c9990f1 --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md @@ -0,0 +1,73 @@ +--- +id: 65ef1aacca094bbcc2e2a3c8 +title: Step 9 +challengeType: 20 +dashedName: step-9 +--- + +# --description-- + +In Python, the `max()` function returns the largest of the input values. + +```python +max(1, 2, 3) # Output: 3 +``` + +The variables `low` and `high` will be used to define the initial interval where the square root lies. + +Inside the `else` clause, initialize the `low` variable to `0` and the `high` variable to be the maximum of either `1` or `square_target` as the square root of a number is always less than or equal to the number itself. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].has_pass()`)) + } +}) +``` + +You should declare a variable `low` and assign it `0`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("low").is_equivalent("low = 0")`)); } +}) + +``` + +You should declare a variable `high` and use the `max()` function to assign it the maximum value between `1` and `square_target`. + +```js + +({ test: () => assert(runPython(` +node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("high") +values = ["high = max(1, square_target)", "high = max(square_target, 1)"] +any(node.is_equivalent(val) for val in values) +`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md new file mode 100644 index 00000000000..6711973a758 --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md @@ -0,0 +1,46 @@ +--- +id: 65ef1afca9a8f6be0d4150ba +title: Step 10 +challengeType: 20 +dashedName: step-10 +--- + +# --description-- + +Set the value of `root` to `None` as at this point, you don't have an approximate value yet. + +# --hints-- + +The value of `root` should be `None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].is_equivalent("low = 0\\nhigh = max(1, square_target)\\nroot = None")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + low = 0 + high = max(1, square_target) + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md new file mode 100644 index 00000000000..69406d9fee2 --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md @@ -0,0 +1,51 @@ +--- +id: 65ef1be2b958cabf712296cd +title: Step 11 +challengeType: 20 +dashedName: step-11 +--- + +# --description-- + +Now you'll repeatedly narrow down the interval by finding the midpoint of the current interval and comparing the square of the midpoint with the target value. + +For that, inside the `else` block, create a `for` loop that runs up to `max_iterations` times. + +# --hints-- + +You should create a `for` loop to iterate over `range(max_iterations)`. Use `_` as the loop variable. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].is_equivalent("for _ in range(max_iterations):\\n pass")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md new file mode 100644 index 00000000000..e5efb88bafc --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md @@ -0,0 +1,78 @@ +--- +id: 65ef1c0a03fcabc04ded7e69 +title: Step 12 +challengeType: 20 +dashedName: step-12 +--- + +# --description-- + +Inside the for loop, calculate the midpoint of the interval ranging from `low` to `high`. Assign this value to a variable `mid`. + +Also, calculate the square of the midpoint (`mid`) and store it in the variable `square_mid`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].has_pass()`)) + + } + +}) + +``` + +You should declare a variable `mid` and assign it `(low + high) / 2` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(` + node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("mid") + values = ["mid = (low + high) / 2", "mid = (high + low) / 2"] + any(node.is_equivalent(val) for val in values) + `)) + + } + +}) +``` + +You should declare a variable `square_mid` and assign it `mid**2` inside the body of the for loop. + +```js +({ test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("square_mid").is_equivalent("square_mid = mid**2")`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md new file mode 100644 index 00000000000..f365f00475d --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md @@ -0,0 +1,53 @@ +--- +id: 65ef1c34a541afc12dbb849d +title: Step 13 +challengeType: 20 +dashedName: step-13 +--- + +# --description-- + +The `abs()` function returns the absolute value of a number, which is always positive, regardless of the number sign. You will use it to check that the estimated square root is close enough to the actual value. + +Now, create an `if` statement to check if the absolute value of the difference between `square_mid` and `square_target` is within the specified `tolerance`. + +# --hints-- + +You should have an `if` statement with the condition `abs(square_mid - square_target) < tolerance:` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[0].is_equivalent("abs(square_mid - square_target) < tolerance")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md new file mode 100644 index 00000000000..7c84ec9d7fe --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md @@ -0,0 +1,68 @@ +--- +id: 65ef1cb031de30c2cde64c12 +title: Step 14 +challengeType: 20 +dashedName: step-14 +--- + +# --description-- + +If the difference is within the specified `tolerance`, set the value of `root` to `mid` and break out of the loop. + +# --hints-- + +You should remove the existing `pass` statement. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].has_pass()`)) + } + +}) + +``` + +You should assign the value of `mid` to `root` and break out of the loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].is_equivalent("root = mid\\nbreak")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md new file mode 100644 index 00000000000..18a6767deab --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md @@ -0,0 +1,71 @@ +--- +id: 65ef1cda150a59c3b8306944 +title: Step 15 +challengeType: 20 +dashedName: step-15 +--- + +# --description-- + +If the difference is not within the specified `tolerance`, create an `elif` statement to check if `square_mid` is less than `square_target`. + +Assign the value of `mid` to `low` as the square root would now lie between `low` and `mid`. + +# --hints-- + +You should create an `elif` statement that checks if `square_mid < square_target`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[1].is_equivalent("square_mid < square_target")`)) + + } + +}) +``` + +You should assign the value of `mid` to `low`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[1].is_equivalent("low = mid")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md new file mode 100644 index 00000000000..06598491f2e --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md @@ -0,0 +1,70 @@ +--- +id: 65ef1d104c2be9c4d8e22075 +title: Step 16 +challengeType: 20 +dashedName: step-16 +--- + +# --description-- + +If both the `if` and `elif` conditions are not met, the value of `mid` would be greater than `square_target`. In this case, create an `else` clause and assign the value of `mid` to `high`. + +# --hints-- + +You should have an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[2]== _Node()`)); + } +}) + +``` + +You should assign the value of `mid` to `high` in the `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[2].is_equivalent("high = mid")`)); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- + elif square_mid < square_target: + low = mid + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md new file mode 100644 index 00000000000..45e3e9987a8 --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md @@ -0,0 +1,76 @@ +--- +id: 65ef1d5e3d2927c5e0f4997b +title: Step 17 +challengeType: 20 +dashedName: step-17 +--- + +# --description-- + +Outside the for loop, create an `if` statement to check if the value of `root` is still `None`. If it is, print the message `'Failed to converge within {max_iterations} iterations.'`. Remember to format the message using an f-string. + +# --hints-- + +You should create an `if` statement that checks if `root is None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[0].is_equivalent("root is None")`)); + + } +}) +``` + +You should pass the argument `f'Failed to converge within {max_iterations} iterations.'` to the `print` function. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].is_equivalent("if root is None:\\n print(f'Failed to converge within {max_iterations} iterations.')")`)); + + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md new file mode 100644 index 00000000000..ffe75554dd8 --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md @@ -0,0 +1,77 @@ +--- +id: 65ef1d924ff2e5c7031c6ce8 +title: Step 18 +challengeType: 20 +dashedName: step-18 +--- + +# --description-- + +Create an `else` clause to handle the case where the value of `root` is not `None`, indicating that a root hass been found. If it is not `None`, print the message `'The square root of {square_target} is approximately {root}'`. Remember to format using an f-string. + +# --hints-- + +You should create an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[1] == _Node()`)); + } +}) + +``` + +You should print `f'The square root of {square_target} is approximately {root}'` within the `else` body. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_bodies()[1].is_equivalent("print(f'The square root of {square_target} is approximately {root}')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md new file mode 100644 index 00000000000..1a2bb01cf56 --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md @@ -0,0 +1,68 @@ +--- +id: 65ef1dd722f6e7c8294eeec4 +title: Step 19 +challengeType: 20 +dashedName: step-19 +--- + +# --description-- + +Finally, return the value of `root` from the `square_root_bisection` function. + +# --hints-- + +You should return `root` at the end of the function. + +```js +({ + test: () => + { + const pyClassStr = runPython(`str(_Node(_code).find_function("square_root_bisection"))`); + assert.match(pyClassStr, /return\s*root/) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md new file mode 100644 index 00000000000..7904b9bceab --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md @@ -0,0 +1,70 @@ +--- +id: 65ef1e10268f8ec9121446d1 +title: Step 20 +challengeType: 20 +dashedName: step-20 +--- + +# --description-- + +Outside the function definiton, create a variable `N` and assign the value of `16` to it. + +# --hints-- + +You should have the variable `N = 16` outside the function definition. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_variable("N").is_equivalent("N = 16")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md new file mode 100644 index 00000000000..71da1b62c03 --- /dev/null +++ b/curriculum/challenges/german/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md @@ -0,0 +1,115 @@ +--- +id: 65ef1eac497754cafa12a26c +title: Step 21 +challengeType: 20 +dashedName: step-21 +--- + +# --description-- + +Call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +Experiment with larger values. + +With this, you have successfully implemented the bisection method to find the square root of a number. + +# --hints-- + +You should call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +```js +({ + test: () => assert(runPython(`_Node(_code).has_call("square_root_bisection(N)")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- +N = 16 + +--fcc-editable-region-- + +``` + +# --solutions-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +N = 16 +square_root_bisection(N) +``` diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md index c4f82eac9f8..71c25f57b1a 100644 --- a/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md +++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md @@ -7,7 +7,7 @@ dashedName: step-8 # --description-- -Um das `cat-head`-Element zu sehen, gib ihm einen Hintergrund mit einem linearen Farbverlauf mit `#5e5e5e` bei `85%` und `#45454f` bei `100%`. +To see the `.cat-head` element, give it a linear gradient background with `#5e5e5e` at `85%` and `#45454f` at `100%`. Vielleicht fällt dir der Unterschied zwischen den beiden Farben nicht auf, aber er ist dennoch vorhanden. diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md index e34ea948534..07a986b1ace 100644 --- a/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md +++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md @@ -11,7 +11,7 @@ Erstelle innerhalb deines `.cat-ears`-Elements zwei `div`-Elemente mit der Klass # --hints-- -Du solltest dein vorhandenes `div`-Element mit der Klasse `car-ears` nicht verändern. +You should not change the existing `div` element with the class `cat-ears`. ```js assert(document.querySelectorAll('div.cat-ears').length === 1); diff --git a/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md b/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md index 16ffba69462..b37f2f0d937 100644 --- a/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md +++ b/curriculum/challenges/german/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md @@ -11,7 +11,7 @@ Der letzte Wert der Positionseigenschaft ist `sticky`. `sticky`-Positionierung i Ändere den Wert der `position`-Eigenschaft von `.cat-head` zu `sticky`, setze `top` auf `0` und entferne dann `left` mitsamt seinem Wert. -**Hinweis**: Um zu sehen, wie `sticky` funktioniert, musst du ein paar Texte vor und nach deinem `.cat-head` `div`-Element platzieren. Wenn du danach nach oben scrollst, siehst du, dass der `.cat-head` oben feststeckt und dort verbleibt. +**Hinweis**: Um zu sehen, wie `sticky` funktioniert, musst du ein paar Texte vor und nach deinem `.cat-head` `div`-Element platzieren. If you scroll down after that, you'll see that the `.cat-head` gets stuck to the top and remains there. # --hints-- diff --git a/curriculum/challenges/german/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md b/curriculum/challenges/german/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md index 0f93285cb97..5f212983dbc 100644 --- a/curriculum/challenges/german/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md +++ b/curriculum/challenges/german/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md @@ -61,7 +61,7 @@ while (continueLoop) { --fcc-editable-region-- --fcc-editable-region-- -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/german/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md b/curriculum/challenges/german/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md index bf40abef119..3f935935d65 100644 --- a/curriculum/challenges/german/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md +++ b/curriculum/challenges/german/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md @@ -44,7 +44,7 @@ let done = 0; while (continueLoop) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/german/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md b/curriculum/challenges/german/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md index 9c976287a58..38f1716a030 100644 --- a/curriculum/challenges/german/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md +++ b/curriculum/challenges/german/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md @@ -48,7 +48,7 @@ let done = 0; while (done !== count) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md b/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md index 773fefac34f..8d206eb904a 100644 --- a/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md +++ b/curriculum/challenges/german/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md @@ -23,15 +23,7 @@ Test value of `__name__` ```js ({ - test: () => assert(__pyodide.runPython(`__name__ == '__main__'`)) -}) -``` - -Test __locals and __pyodide - -```js -({ - test: () => assert(__pyodide.runPython(`__locals.get('add')(4,5) == 9`)) + test: () => assert(runPython(`__name__ == '__main__'`)) }) ``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md index d2139487de3..de4fa3e7ee3 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md @@ -1,6 +1,5 @@ --- id: 658111239f39a01c8f095c44 -videoId: nLDychdBwUg title: "Dialogue 1: What Motivates the Team?" challengeType: 21 dashedName: dialogue-1-what-motivates-the-team @@ -13,3 +12,275 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Maria", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.5, + "dialogue": { + "text": "Hey Maria, I have a question… Do you know what motivates the team?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 4.9, + "finishTime": 7.4, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 8.7, + "finishTime": 12.3, + "dialogue": { + "text": "Hi Brian! Well, one thing that really motivates me is learning new things.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 12.7, + "finishTime": 16, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 16.5, + "finishTime": 18.2, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 19.7, + "finishTime": 20.9, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 21.3, + "finishTime": 24.7, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 25, + "finishTime": 27.2, + "dialogue": { + "text": "But you know what demotivates me sometimes?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 27.7, + "finishTime": 32.6, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 33.1, + "finishTime": 37.3, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 37.7, + "finishTime": 39.7, + "dialogue": { + "text": "Well, collaborating with our creative team", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 39.7, + "finishTime": 42.5, + "dialogue": { + "text": "and brainstorming many ideas really inspires me.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 42.8, + "finishTime": 44.6, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 45.5, + "finishTime": 49, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 49.3, + "finishTime": 53.6, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 54, + "finishTime": 55.5, + "dialogue": { + "text": "It is really frustrating.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 56.5, + "finishTime": 58.4, + "dialogue": { + "text": "Yeah, technical glitches are complicated", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 58.4, + "finishTime": 61, + "dialogue": { + "text": "and there's not much we can do other than try to solve them.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 62, + "finishTime": 63.3, + "dialogue": { + "text": "But do you know what else is great?", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 63.7, + "finishTime": 66.7, + "dialogue": { + "text": "Seeing the team's enthusiasm after solving these issues.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 67.1, + "finishTime": 69.8, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 71.3, + "finishTime": 75.4, + "dialogue": { + "text": "Yeah. Wow. You know what? This was really a motivating talk.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 75.7, + "finishTime": 77.1, + "dialogue": { + "text": "Thanks for sharing your thoughts.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 77.7, + "finishTime": 79.8, + "dialogue": { + "text": "Anytime. It's good to have these discussions.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 80, + "finishTime": 81.6, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "right" + } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 82.1 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 82.6 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md index 5eb9cbab87f..bd40d89ce39 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-6 --- - + # --description-- @@ -18,7 +15,7 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ## --sentence-- -`Well, one thing that really motivates me is _ new things.` +`Hi, Brian. Well, one thing that really motivates me is _ new things.` ## --blanks-- @@ -27,3 +24,47 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ### --feedback-- This word is a gerund, the `-ing` form of the verb used as a noun, indicating the action or process of gaining knowledge. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md index 57d5a2b1a4d..279e2861a88 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-5 --- - + # --description-- @@ -20,7 +17,7 @@ When you add an `s` at the end of a word, like `things`, it means you are talkin ## --sentence-- -`Hi Brian! _, one _ that really motivates me _ learning new _.` +`Hi, Brian! _, one _ that really motivates me _ learning new _.` ## --blanks-- @@ -53,3 +50,47 @@ This is the verb `to be` conjugated in the third person singular. ### --feedback-- Maria uses this word to talk about more than one item or idea she likes to learn. It is the plural form of `thing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md index eee61930dcc..3ecb0ccb702 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-7 --- - + # --description-- @@ -51,3 +48,47 @@ learning new things ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md index 053ae896f0b..80d98bbbc33 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-8 --- - + # --description-- @@ -37,3 +34,47 @@ This word is a gerund describing the activity Maria enjoys related to discoverin ### --feedback-- Another gerund that follows `and`, indicating another activity Maria enjoys, which is about getting better at something. It also ends in `-ing` and serves as a noun. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 15.04 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.28, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.78 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md index fbe4dcc505d..cfa8469782b 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-10 --- - + # --description-- @@ -26,7 +23,7 @@ In `I love exploring many new technologies`, how is `exploring` used? ## --answers-- -As a present continuous +As a verb in the present continuous structure ### --feedback-- @@ -34,7 +31,7 @@ Present continuous are for actions happening now. This is not showing an action --- -As a simple present verb +As a verb in the simple present structure ### --feedback-- @@ -42,11 +39,11 @@ Simple present verbs don't end in `-ing`. --- -As a gerund +As a verb in the gerund form --- -As a past participle +As a verb in the past participle form ### --feedback-- @@ -55,3 +52,47 @@ Past participles are for perfect tenses or as adjectives. This is not used like ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 6.50, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills. It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 7.00 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md index 80690caccd2..252cf48c05b 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-18 --- - + # --description-- @@ -31,3 +28,47 @@ Adding a prefix to a word can change its meaning. ### --feedback-- Maria uses an adjective ending in `-ing` to describe a feeling that is the opposite of `motivating`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 32.22, + "finishTimestamp": 36.08 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.86, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.36 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md index 9001228085f..2ea50eff48d 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-11 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to the audio and complete the sentence. ### --feedback-- This word is used when someone listens to what another person says. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 19.86 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 2.68 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md index f00bebea879..042955730aa 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-12 --- - + # --description-- @@ -49,3 +46,47 @@ This word means to develop or become bigger or more advanced. It ends with `-ing ### --feedback-- This word is related to work or a career. It describes doing something in a way that shows good skills and behavior at a job. it ends with `-ly` + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 20.28, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md index 885332a3dfc..008035b84e7 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-13 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on how skill improvement fits into overall personal and professional dev ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.98, + "dialogue": { + "text": "That's great to hear, Maria. Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.48 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md index a99fd602832..e087041f3d9 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-14 --- - + # --description-- @@ -53,3 +50,65 @@ He's adding to the conversation, not changing the topic. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 26.26 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 2.60, + "finishTime": 5.64, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot,", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 6.02, + "finishTime": 8.58, + "dialogue": { + "text": "but you know what demotivates me sometimes?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 9.08 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md index 0bcef38811f..ed340f1a31c 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md @@ -28,4 +28,48 @@ Listen to the audio and complete the sentence. ### --feedback-- -This word means feeling very happy and eager. +This word means feeling very happy and eager. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 15.32, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.94, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.44 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md index b425e084763..cf6dcc31710 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-16 --- - + # --description-- @@ -55,3 +52,47 @@ This phrase means having plenty of time, which is different from what Brian mean ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md index b5708ac00fe..8de15f47d1c 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-17 --- - + # --description-- @@ -47,3 +44,47 @@ This word is a preposition used to compare or illustrate a similarity to somethi ### --feedback-- It means you are doing something quickly because you do not have much time. It ends with `-ing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md index 5293029060e..f74bac67a8c 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-20 --- + + # --description-- The word `brainstorming` refers to a group discussion to produce ideas and solve problems. @@ -46,3 +48,47 @@ It means adhering to specific instructions, which is not the same as the word. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md index ea82aef1538..1b4aea4a2b1 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-28 --- - + # --description-- @@ -18,7 +15,7 @@ The phrase `slow down` means to decrease in speed or reduce the rate of progress ## --sentence-- -`The problem is encountering many technical issues that make our progress _ _.` +`The problem is encountering many technical issues that _ our progress _.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to describe a decrease in speed or pace. ### --feedback-- This adverb complements the phrase to indicate a reduction or decrease in intensity, speed, or amount. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md index ed1c423927b..bd8c7fa6444 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-32 --- + + # --description-- The phrase `other than` indicates the presence of an alternative or different option. @@ -46,3 +48,47 @@ It means the singular or exclusive option, which is not the same as the phrase. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md index d2a4201ca63..9712d6a3279 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-35 --- - + # --description-- @@ -43,3 +40,47 @@ This possessive adjective is used to refer to something that belongs to the pers ### --feedback-- This noun refers to the reason or reasons one has for acting or behaving in a particular way. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 66.12, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 3.68, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.18 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md index 8f432d36f95..c5b54c0b913 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-38 --- - + # --description-- @@ -29,3 +26,47 @@ In the dialogue, Maria talks about the importance of discussions to help them re ### --feedback-- This verb is used to make someone think of something they might have forgotten. It brings something back into someone's mind. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 76.52, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.08, + "dialogue": { + "text": "Anytime. It's good to have these discussions. It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.58 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md index ba9e43efcb6..974459e9326 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-39 --- - + # --description-- @@ -43,3 +40,47 @@ This pronoun refers to the speaker and at least one other person, indicating a c ### --feedback-- This word is used in the context of continuing forward or persevering in a particular action or state. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 79.06, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.54, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.04 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md index 2f8c34f4dbf..c1b55b444af 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md @@ -1,6 +1,5 @@ --- id: 658160772584ba319849f910 -videoId: nLDychdBwUg title: "Dialogue 2: Asking How Someone Feels" challengeType: 21 dashedName: dialogue-2-asking-how-someone-feels @@ -13,3 +12,239 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Alice", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Tom", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Alice", + "startTime": 2, + "finishTime": 5.6, + "dialogue": { + "text": "Hi Tom, you look a bit down these days. Is everything okay?", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 6.3, + "finishTime": 9.5, + "dialogue": { + "text": "Hey Alice, yeah, I feel a bit demotivated.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 9.8, + "finishTime": 13.6, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 13.8, + "finishTime": 16.7, + "dialogue": { + "text": "It's exhausting, and it feels like I'm constantly running", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 16.7, + "finishTime": 18.1, + "dialogue": { + "text": "without knowing where I'm going.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 18.9, + "finishTime": 22.7, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 23.4, + "finishTime": 25.7, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 26.2, + "finishTime": 28.8, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 28.8, + "finishTime": 30.6, + "dialogue": { + "text": "instead of working together as a team.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 31.3, + "finishTime": 34.7, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 35, + "finishTime": 38.4, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 38.9, + "finishTime": 41.7, + "dialogue": { + "text": "Sometimes, it feels like we're meeting for no reason,", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 41.7, + "finishTime": 44.3, + "dialogue": { + "text": "and it's hard to find time to actually work on projects.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 45, + "finishTime": 48.4, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 49, + "finishTime": 52.6, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 52.6, + "finishTime": 56.6, + "dialogue": { + "text": "without any variation. It feels like I'm wasting my skills and creativity.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 57.06, + "finishTime": 59, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 59.6, + "finishTime": 62.8, + "dialogue": { + "text": "Repeating the same tasks over and over can be demotivating.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 63.2, + "finishTime": 66.4, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 66.8, + "finishTime": 69.4, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation,", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 69.4, + "finishTime": 71.3, + "dialogue": { + "text": "and it's good to share and support each other.", + "align": "left" + } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 71.8 + }, + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 72.3 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md index b8674840c93..9a3003405af 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-40 --- - + # --description-- @@ -22,7 +19,7 @@ In this conversation, Alice notices something about Tom's mood and asks if he's ## --sentence-- -`Hi Tom, you look a bit _ _ days. Is everything okay?` +`Hi, Tom. You look a bit _ _ days. Is everything okay?` ## --blanks-- @@ -39,3 +36,47 @@ This word is used to describe feeling sad or unhappy. It's like when you're not ### --feedback-- This word is used with `days` to talk about the current time or the recent period. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 0.98, + "finishTimestamp": 4.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.60, + "dialogue": { + "text": "Hi, Tom. You look a bit down these days. Is everything okay?", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.10 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md index 8fe09a43d89..fdd78d7f84d 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-41 --- - + # --description-- @@ -20,7 +17,7 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ## --sentence-- -`Hey Alice, yeah, I feel a bit _.` +`Hey, Alice. Yeah, I feel a bit _.` ## --blanks-- @@ -29,3 +26,47 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ### --feedback-- This word is used to describe how Tom feels. It ends with `ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 8.48 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md index a8f6062add9..e30ea2d793a 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-42 --- - + # --description-- @@ -46,8 +43,52 @@ This word means `lacking` or `not having` something. --- -`break` +`breaks` ### --feedback-- -This word refers to a short period of rest or pause from work or activity. +This word refers to a short period of rest or pause from work or activity. Use the plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 8.84, + "finishTimestamp": 12.60 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.76, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.26 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md index 90185d888a6..b19719a1211 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-43 --- - + # --description-- @@ -45,3 +42,47 @@ This word means something is happening all the time or very often. ### --feedback-- This word is used to indicate the absence of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 12.82, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 5.30, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.80 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md index b6f27b9c9b9..524c4be5635 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-44 --- - + # --description-- @@ -18,7 +15,7 @@ Tom talks about what's making him feel demotivated. Let's figure out what is bot ## --text-- -What is making Tom feel demotivated and why? +What is making Tom feel demotivated? ## --answers-- @@ -51,3 +48,65 @@ Reflect on Tom's words about his work routine and how it makes him feel. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.54, + "finishTime": 8.3, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 8.52, + "finishTime": 12.82, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 13.32 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md index 23f853581be..b084d8c5f2d 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-45 --- - + # --description-- @@ -51,3 +48,47 @@ She understands how Tom feels ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 18.98 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 2.28, + "dialogue": { + "text": "I totally get that, Tom.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 2.78 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md index 95b626db8ab..18b3ede5a71 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-46 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working more hours than what is normally required, often beyond ### --feedback-- This word describes something that makes you feel very tired, like it's taking all your energy away. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 21.72 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.02, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.52 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md index 8e581dc301d..143b260cab0 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-47 --- - + # --description-- @@ -35,3 +32,47 @@ This word means managing or handling, especially when the situation is challengi ### --feedback-- This word, in the context of the office, refers to the social and power dynamics among coworkers and within the workplace environment. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 24.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.52, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.02 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md index ffd2e2364d2..5c132f9bd9c 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-48 --- - + # --description-- @@ -45,3 +42,47 @@ This word means making an effort to do something, often something challenging. ### --feedback-- This word is about doing tasks, especially with others to achieve a common goal or finish a project. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 25.02, + "finishTimestamp": 29.38 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.36, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.86 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md index eed7315d9fd..1c59d0c36f8 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-49 --- - + # --description-- @@ -51,3 +48,65 @@ Reflect on the specific aspect of work that Alice mentions she hates dealing wit ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 29.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.9, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 5.64, + "finishTime": 7.96, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 8.4, + "finishTime": 12.88, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 13.38 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md index 008029728ad..89639635494 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-50 --- - + # --description-- @@ -22,11 +19,11 @@ Tom is agreeing with Alice about a specific aspect of work that they find unplea ## --blanks-- -`dealing` +`Dealing` ### --feedback-- -This word means managing or handling something, often implying that it's not an easy or enjoyable task. +This word means managing or handling something, often implying that it's not an easy or enjoyable task. Don't forget the capitalization. --- @@ -35,3 +32,47 @@ This word means managing or handling something, often implying that it's not an ### --feedback-- In the context of an office, this word refers to the social and power dynamics among coworkers. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 30.08, + "finishTimestamp": 33.46 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md index 33c828a005d..eb1ae62b875 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-51 --- - + # --description-- @@ -45,3 +42,47 @@ This word is part of a expression that means something is making Tom upset or an ### --feedback-- This word is used when you're talking about experiencing something, like when you have a lot of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md index f182b582c7f..9e516b17b69 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-52 --- - + # --description-- @@ -51,3 +48,47 @@ He wishes for even more meetings ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md index 43b8ae258c9..f457d5cb4c2 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-53 --- - + # --description-- -Listen to the audio and answer the question. +Listen to the audio and fill in the blanks. # --fillInTheBlank-- @@ -51,3 +48,47 @@ This word means to discover or locate something. It's often used when you're loo ### --feedback-- This word is used to emphasize what is really true or happening. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md index e12e17d47ff..a0c2ef0d79a 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-54 --- - + # --description-- @@ -51,3 +48,47 @@ They take away time from working on projects ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md index 2bd6b036fb7..97dde90f3cb 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-55 --- - + # --description-- @@ -24,7 +21,7 @@ Alice: I hear you, Tom. Sitting in meetings for hours can be discouraging. ## --sentence-- -`_ in meetings for hours can be _.` +`I hear you, Tom. _ in meetings for hours can be _.` ## --blanks-- @@ -41,3 +38,47 @@ This word describes the action of being seated. It is capitalized. ### --feedback-- This word means something that makes you feel less confident or willing to continue. It ends in `ing`, showing it's describing the effect of the action. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md index da3c221a1f1..30aeb3ff460 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md @@ -5,12 +5,7 @@ challengeType: 19 dashedName: task-56 --- - + # --description-- @@ -53,3 +48,47 @@ Consider what Alice means by `discouraging` in the context of meetings. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md index c60324ba8d3..2957a5033ab 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-57 --- - + # --description-- @@ -43,3 +40,47 @@ This word is used to describe a large number of things grouped together. It's li ### --feedback-- This word refers to having different types or changes in something. It's the opposite of doing the same thing over and over. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 52.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 6.02, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.52 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md index 63d0a5a5643..cf49c33b69a 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-58 --- - + # --description-- @@ -35,3 +32,47 @@ This word means not using something valuable in a good or effective way. It's li ### --feedback-- This word refers to the ability to make new things or think of new ideas. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 53.24, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.34, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 3.84 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md index 540a3a77c0f..e189fc50af5 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-59 --- - + # --description-- @@ -51,3 +48,56 @@ Consider what Alice says directly annoys her versus how she feels about another ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md index ef09e4af19b..a5f87b483bd 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-60 --- - + # --description-- @@ -51,3 +48,56 @@ Think about whether meetings are mentioned in the context of wasting skills and ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md index fa7b1328561..7f182561d7f 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-61 --- - + # --description-- @@ -39,3 +36,47 @@ This auxiliary verb is used here to emphasize the verb that follows it, making t ### --feedback-- This adjective describes feelings of annoyance or irritation, often because of obstacles or difficulties. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 58.00 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.14, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 3.64 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md index e2e6ee3f118..d0f7a57efaa 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-62 --- - + # --description-- @@ -55,3 +52,47 @@ This word, when used twice with `and` in between, emphasizes the repetition of a ### --feedback-- This word describes something that reduces your desire or willingness to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 61.78 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "That does sound frustrating, Alice. Repeating the same tasks over and over can be demotivating.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md index 27d721f5a0a..bef09034af7 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-63 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to describe an emotional experience or sensation, in this case ### --feedback-- This word is the plural of `this`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md index 1721b02d9e4..c2eefbb7b7d 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-65 --- - + # --description-- @@ -51,3 +48,47 @@ For listening to him ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md index 80ad6cb9859..dc1a51e3b48 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-66 --- - + # --description-- @@ -51,3 +48,47 @@ This word means to tell others about your own experiences, thoughts, or feelings ### --feedback-- This word involves giving help or encouragement, showing you are there for someone. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md index 88359a9631c..ae0f2da0a0d 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-67 --- - + # --description-- @@ -51,3 +48,47 @@ The value of sharing feelings and supporting one another ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md index 01535bb27f7..e34ef923278 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-64 --- - + # --description-- @@ -44,3 +41,46 @@ This word is the middle part of the phrase used to casually introduce new inform This word completes the phrase, indicating a casual addition or shift in the conversation. +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md index abd512abbb8..fb7e5ccda2d 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md @@ -1,6 +1,5 @@ --- id: 65a351bd69b0b72d7ed24eb5 -videoId: nLDychdBwUg title: "Dialogue 3: Talking About Motivations to Pursue a Career" challengeType: 21 dashedName: dialogue-3-talking-about-motivations-to-pursue-a-career @@ -13,3 +12,212 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Lisa", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5, + "dialogue": { + "text": "Hey Lisa, what motivated you to choose a career in tech?", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 6, + "finishTime": 8.5, + "dialogue": { + "text": "One of my main motivations was the financial stability", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 8.8, + "finishTime": 10, + "dialogue": { + "text": "that tech jobs can provide.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 10.4, + "finishTime": 12.8, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 13.3, + "finishTime": 16.3, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 17.4, + "finishTime": 19.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 19.8, + "finishTime": 24, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 24, + "finishTime": 26, + "dialogue": { + "text": "and have different perspectives.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 26.8, + "finishTime": 29.2, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 29.2, + "finishTime": 32.1, + "dialogue": { + "text": "Another thing was the chance to be part of projects", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 32.1, + "finishTime": 34.2, + "dialogue": { + "text": "that push the limits of innovation and creativity.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 34.9, + "finishTime": 36, + "dialogue": { + "text": "I'm with you on that one.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 36.1, + "finishTime": 39.6, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 39.7, + "finishTime": 43.1, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 44.3, + "finishTime": 47.3, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 47.3, + "finishTime": 49.6, + "dialogue": { + "text": "and finding practical solutions is really thrilling.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 50.3, + "finishTime": 53, + "dialogue": { + "text": "Knowing that we solved problems is really exciting, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 53.4, + "finishTime": 56.7, + "dialogue": { + "text": "I hope we keep getting as much motivation from it as we can.", + "align": "left" + } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.2 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.7 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md index e165f760c08..23c160c642f 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-68 --- - + # --description-- @@ -18,7 +15,7 @@ Brian: Hey Lisa, what motivated you to choose a career in tech? ## --sentence-- -`Hey Lisa, what _ you to _ a career in tech?` +`Hey, Lisa, what _ you to _ a career in tech?` ## --blanks-- @@ -34,4 +31,48 @@ This word means something gave you a reason or desire to do something. It ends w ### --feedback-- -This verb is about making a decision between different options. +This verb is about making a decision between different options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md index 94e4ccd2b3e..3a96b95c93a 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-69 --- - + # --description-- @@ -51,3 +48,47 @@ What motivated her to pick a tech career ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md index 47d7700e414..9dc5f7bc32d 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-70 --- - + # --description-- @@ -37,3 +34,47 @@ The most important. ### --feedback-- Being steady, meaning you don't have to worry too much about it. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md index afed572b3be..22a27d6cb43 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-71 --- - + # --description-- @@ -35,3 +32,47 @@ This word is a past tense verb used to describe a state or condition in the past ### --feedback-- This verb means to give or supply something needed, like help, information, or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md index a5031402575..f006bbf44d1 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-72 --- - + # --description-- @@ -52,3 +48,71 @@ Reflect on Lisa's statement and whether travel is mentioned as a motivation. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.50 + }, + { + "character": "Lisa", + "opacity": 1, + "startTime": 5.50 + }, + { + "character": "Lisa", + "startTime": 5.82, + "finishTime": 10.02, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md index e71f55301a3..4b20a9bd448 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-73 --- - + # --description-- @@ -37,3 +34,47 @@ This verb means giving permission or making it possible to do something. this ve ### --feedback-- This noun describes the feeling of being certain about your abilities or something you're going to do. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 9.48, + "finishTimestamp": 11.90 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.42, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 3.92 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md index 4f8c68dfebb..ca8b0a42958 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-74 --- - + # --description-- @@ -39,3 +36,47 @@ This word refers to different areas of work or study. It's plural here because s ### --feedback-- This verb is used to talk about successfully reaching a goal, especially after putting in effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 12.16, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md index d0951b06bde..84aca093d52 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-75 --- - + # --description-- @@ -51,3 +48,65 @@ Lisa doesn't mention working less. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md index 1e5b8911585..9bd217faa04 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-76 --- - + # --description-- The words `much` and `many` are used to talk about quantity. @@ -52,3 +49,65 @@ Reflect on Lisa's statement about what makes tech jobs stand out for her. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md index 38a5ed3758e..013e56a7705 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-77 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to Brian's response to Lisa and fill in the missing word that shows he st ### --feedback-- This adverb is used to emphasize the truth or importance of a statement, showing strong agreement or belief. it ends with `ly`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 18.38 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.40, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.90 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md index 620135fd503..145afc143d8 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-78 --- - + # --description-- @@ -51,3 +48,47 @@ This word is used to describe different areas of study or work. This word is in ### --feedback-- These are different ways of viewing or thinking about something. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 18.80, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.20, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.70 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md index 5f88ce8ca38..56d23563f4a 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-79 --- - + # --description-- @@ -51,3 +48,56 @@ Consider Brian's interest in working across many fields versus concentrating on ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 3.82, + "finishTime": 10.02, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md index 9867dd455d5..36fa55aa8ae 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-80 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working together with others. Notice it ends with `-ing`, indica ### --feedback-- This adjective describes something that is thrilling or full of energy. It ends with `-ing`, showing a quality or state. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.62, + "finishTimestamp": 28.18 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md index 31ed219cb44..d126871e672 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-81 --- - + # --description-- @@ -45,3 +42,47 @@ TTo extend or go beyond usual limits or boundaries. It's often used to talk abou ### --feedback-- This noun refers to new ideas, products, or methods that improve something or solve problems. It's about coming up with new ways to do things. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 28.38, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md index 976777de56e..19ed243bc7e 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-82 --- - + # --description-- @@ -51,3 +48,56 @@ Consider whether Lisa's motivation is related to work environment or the nature ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.94 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md index cc4a931a4a1..9d83cc465d3 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-83 --- - + # --description-- @@ -52,3 +48,80 @@ He agrees with Lisa ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 34.98 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.45 + }, + { + "character": "Brian", + "opacity": 1, + "startTime": 8.45 + }, + { + "character": "Brian", + "startTime": 8.57, + "finishTime": 10.16, + "dialogue": { + "text": "I'm with you on that one.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.66 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md index 3c748ab456e..c9ec667c225 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-84 --- - + # --description-- @@ -37,3 +34,47 @@ This noun describes the ability to change or adapt easily according to different ### --feedback-- This word refers to the specific functions or positions that individuals can have within a group or organization. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 38.36 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.76 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md index f111304b929..566d8c5e7db 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-85 --- - + # --description-- @@ -20,7 +17,7 @@ Listen carefully and fill in the missing words about what tech roles make possib ## --sentence-- -`They _ us to balance our jobs with personal _ and hobbies.` +`I'm also interested in the flexibility that tech roles offer. They _ us to balance our jobs with personal _ and hobbies.` ## --blanks-- @@ -37,3 +34,56 @@ This verb means to make something possible or to give permission for something. ### --feedback-- This noun refers to things you enjoy doing, like hobbies or activities that catch your attention. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md index 0efe7ddf734..f5aab15821c 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-86 --- - + # --description-- @@ -55,3 +52,56 @@ Is Brian talking about traveling, or is he interested in something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md index 1828c2b24fd..f285c7e7f50 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-87 --- - + # --description-- @@ -45,3 +42,47 @@ This word means discovering or coming up with something, like an answer or solut ### --feedback-- This adjective means very exciting. It often describes something that makes your heart beat faster because it's so exciting or fun. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md index a2b77cc1c45..689b3e667de 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-88 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on the word `satisfaction` and if it suggests feeling tired. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md index 122529e8f39..fd8178da8fc 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-89 --- - + # --description-- @@ -43,3 +40,47 @@ This adjective describes something that is thrilling or causes great enthusiasm. ### --feedback-- This word means receiving or obtaining something. Here, it's also in the `-ing` form, indicating an ongoing action or process. Remember to use double `t`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md index f8bb1a273ee..a72f4990d84 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-90 --- - + # --description-- @@ -53,3 +50,47 @@ Brian talks about being excited by solving problems, not about where to find mot ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md index 93a91f9790d..f0a8796d57b 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md @@ -13,3 +13,221 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Bob", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sarah", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.6, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech?", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 5, + "finishTime": 7, + "dialogue": { + "text": "It's all those amazing gadgets!", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 7.8, + "finishTime": 9.6, + "dialogue": { + "text": "I can see your enthusiasm, Bob!", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 9.9, + "finishTime": 12.3, + "dialogue": { + "text": "Tell me, which tech gadgets are your absolute favorites?", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 13, + "finishTime": 16.2, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 16.3, + "finishTime": 18.9, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health,", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 19.2, + "finishTime": 22.7, + "dialogue": { + "text": "and even helps me stay organized with reminders and notifications.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 23.7, + "finishTime": 26, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 26, + "finishTime": 28.1, + "dialogue": { + "text": "The camera quality, the speed,", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 28.3, + "finishTime": 30.8, + "dialogue": { + "text": "and the number of apps available are what I like the most.", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 31.2, + "finishTime": 33.9, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 34.3, + "finishTime": 37.2, + "dialogue": { + "text": "Gadgets like these are transforming our daily lives.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 37.6, + "finishTime": 40.8, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 41.3, + "finishTime": 44, + "dialogue": { + "text": "I love capturing stunning aerial shots", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 44, + "finishTime": 46.5, + "dialogue": { + "text": "and exploring new angles for photography.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 47.7, + "finishTime": 50.3, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 50.7, + "finishTime": 52.7, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 52.7, + "finishTime": 54.5, + "dialogue": { + "text": "It's amazing how these innovations", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 54.5, + "finishTime": 56.8, + "dialogue": { + "text": "keep making our lives more interesting and connected.", + "align": "right" + } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.3 + }, + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.8 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md index 2f5b51c5efe..1c735765ddb 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-91 --- - + # --description-- @@ -47,3 +44,47 @@ This word is used to point out specific things that are being talked about, in t ### --feedback-- This word refers to small electronic devices or tools that are useful or interesting. It's often used to talk about cool tech items. It is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md index 06bb47f4e2f..7ddc748e75b 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-92 --- - + # --description-- @@ -51,3 +48,47 @@ The latest technology gadgets ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md index 746bfa4615b..96ed9a633c9 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-93 --- - + # --description-- @@ -27,3 +24,47 @@ Sarah: I can see your enthusiasm, Bob! ### --feedback-- This noun describes the feeling of being very excited or interested in something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 8.60 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 2.74, + "dialogue": { + "text": "I can see your enthusiasm, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.24 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md index a7eb6fcbfcb..4f55a749a61 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-94 --- - + # --description-- @@ -22,7 +19,7 @@ Sarah: I can see your enthusiasm, Bob! Tell me, which tech gadgets are your abso ## --sentence-- -`Tell me, _ tech gadgets are your _ favorites?` +`I can see your enthusiasm, Bob! Tell me, _ gadgets are your _ favorites?` ## --blanks-- @@ -39,3 +36,47 @@ This word asks for a specific choice or selection from a known group of items. ### --feedback-- This adjective emphasizes that the choice is the most complete or total among all options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 11.36 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.50, + "dialogue": { + "text": "I can see your enthusiasm, Bob. Tell me, which gadgets are your absolute favorites?", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.00 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md index 09bd788377d..9514f27cc60 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-95 --- - + # --description-- @@ -35,3 +32,47 @@ This preposition is used to show that something belongs to or is part of somethi ### --feedback-- This noun refers to a type of watch that has more features than just telling time, often including apps and internet connectivity. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 15.20 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.66 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md index b247dacc6dd..feadc88525d 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md @@ -5,10 +5,8 @@ challengeType: 22 dashedName: task-96 --- - + + # --description-- `To track` means to follow or monitor the progress, movement, or development of something or someone. @@ -44,3 +42,47 @@ This verb means to monitor or follow the course or progress of something, especi ### --feedback-- This verb means to make it easier or possible for someone to do something by offering services or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md index 99dcae91a0c..2c3332a8708 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-97 --- - + # --description-- @@ -45,3 +42,47 @@ This adjective means arranged in a systematic way, especially on a large scale. ### --feedback-- These are alerts or messages that prompt you to remember tasks or appointments. This word ends with `s`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md index 4d36b7b2989..49fbdc264ee 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-98 --- - + # --description-- @@ -51,3 +48,56 @@ It keeps him connected, tracks his health, and helps him stay organized ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.32, + "finishTime": 10.70, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 11.20 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md index 7185d037ed7..2d1e897054c 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-99 --- - + # --description-- @@ -35,3 +32,47 @@ This word is capitalized and in plural form. ### --feedback-- This word describes advanced mobile phones with extensive computing capabilities and connectivity. It is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 25.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.98 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md index 1f660afcb03..81e873d902e 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-100 --- - + # --description-- @@ -53,3 +50,47 @@ This adjective means something can be accessed or used, like apps in an app stor ### --feedback-- This word is used to indicate the highest degree or the greatest amount of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 25.24, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.60, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.10 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md index 6998dd4ffa5..1e063e1befc 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-101 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on whether design is a factor in Sarah's stated preferences. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.56, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 3.68, + "finishTime": 8.08, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 8.58 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md index dac54e85492..92b3b88cee4 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-102 --- - + # --description-- @@ -43,3 +40,47 @@ This verb means causing a significant change or improvement in something. This w ### --feedback-- This adjective refers to something that happens every day or is part of everyday life. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md index 66cda46110d..6e56479dc8d 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-103 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Bob mentions radio as a factor in transforming daily life. ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md index ec96099aa49..93b5cc92a66 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-104 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to talk about the current period of time or the present days. ### --feedback-- This noun refers to remote-controlled flying machines, often used for photography, racing, or recreation. This word is capitalized. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 39.78 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.20, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.70 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md index 2eb13bfcb4b..7bdc1f302f5 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-105 --- - + # --description-- @@ -43,3 +40,47 @@ This verb involves examining or investigating something in order to learn more a ### --feedback-- This noun refers to the art, practice, or job of taking pictures with a camera, capturing moments, and expressions. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md index 08e3ab9b847..95aa8e526fc 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-106 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective describes something extremely beautiful or impressive. ### --feedback-- In photography, this noun means photographs or the act of taking a photograph. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md index 1b7d3770f1d..f8e77d3a9fe 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-107 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective refers to something related to the air or happening in the sky. ### --feedback-- This noun refers to the specific viewpoints or positions from which photos are taken. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md index c172cb36554..cf2a562eb4c 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-108 --- - + # --description-- @@ -51,3 +48,56 @@ They allow for stunning aerial photography ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.2, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.78, + "finishTime": 9.98, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 10.48 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md index a67e640bd01..64e3aa577d5 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-109 --- - + # --description-- @@ -35,3 +32,47 @@ This adjective in the expression means allowing access, passage, or a view throu ### --feedback-- This noun refers to things that may happen or be the case in the future, often exciting or beneficial opportunities. it is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.48, + "finishTimestamp": 49.32 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.84, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 4.34 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md index a7c5acbe452..9a5e4ff7dc6 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-110 --- - + # --description-- @@ -35,3 +32,47 @@ This noun describes a strong feeling of enthusiasm or excitement for something o ### --feedback-- In this context, this adjective means that a feeling, especially a positive one like enthusiasm, can spread from one person to others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 49.52, + "finishTimestamp": 51.74 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.22, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.72 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md index 0578945ebcc..c64025643be 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-111 --- - + # --description-- @@ -51,3 +48,47 @@ This adjective describes something that arouses curiosity or is enjoyable and en ### --feedback-- This adjective means being in touch with others or having easy access to information, especially through technology. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 51.94, + "finishTimestamp": 56.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.10, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 5.60 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md index bc02e1710e1..fe30597a170 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-112 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on the enthusiasm and positivity in Sarah's statement. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.28, + "finishTimestamp": 55.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 6.26, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob. Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 6.46, + "finishTime": 10.36, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 10.86 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md index ebba772a320..20eaca5ac90 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md @@ -1,6 +1,5 @@ --- id: 65a533f54a5afeff6c6bb996 -videoId: nLDychdBwUg title: "Dialogue 5: Discussing Open-source Software" challengeType: 21 dashedName: dialogue-5-discussing-open-source-software @@ -13,3 +12,284 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Tom", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sophie", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.5, + "dialogue": { + "text": "Hey, Sophie, what motivates you", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 3.8, + "finishTime": 6.9, + "dialogue": { + "text": "to work on open-source software projects in your free time?", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 7.8, + "finishTime": 10.2, + "dialogue": { + "text": "Well, I love contributing to open-source projects!", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 10.5, + "finishTime": 13, + "dialogue": { + "text": "I really like the sense of community and collaboration.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 13.5, + "finishTime": 15.4, + "dialogue": { + "text": "It's incredible how people from around the world", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 15.4, + "finishTime": 17.5, + "dialogue": { + "text": "come together to create something amazing.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 18.2, + "finishTime": 20.4, + "dialogue": { + "text": "Yeah. I checked out some open-source projects,", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 20.5, + "finishTime": 23.1, + "dialogue": { + "text": "but I admit that I have problems with the amount of time", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 23.1, + "finishTime": 24.3, + "dialogue": { + "text": "it can take to contribute.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 24.7, + "finishTime": 27.1, + "dialogue": { + "text": "Sometimes, it can be so time-consuming.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 27.1, + "finishTime": 29.7, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 29.9, + "finishTime": 33.3, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 33.8, + "finishTime": 36.5, + "dialogue": { + "text": "Open source is all about transparency and accessibility,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 36.5, + "finishTime": 38.4, + "dialogue": { + "text": "and that's something I truly believe in.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 39, + "finishTime": 42.2, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 42.7, + "finishTime": 45.7, + "dialogue": { + "text": "For me, I like the idea of practicing my skills", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 45.7, + "finishTime": 48, + "dialogue": { + "text": "and getting recognition for my contributions.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 48.5, + "finishTime": 51.4, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 52.4, + "finishTime": 56, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 56.4, + "finishTime": 58, + "dialogue": { + "text": "there isn't much you can do to save it.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 58.4, + "finishTime": 61.4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 62.2, + "finishTime": 65.2, + "dialogue": { + "text": "That's true. The sustainability of open-source projects", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 65.2, + "finishTime": 67.5, + "dialogue": { + "text": "is something I'm growing to appreciate more.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 67.8, + "finishTime": 69.2, + "dialogue": { + "text": "Thanks for sharing your motivations.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 69.8, + "finishTime": 71.7, + "dialogue": { + "text": "I think I'll see if I can find a project", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 71.7, + "finishTime": 72.8, + "dialogue": { + "text": "to dedicate some spare time to.", + "align": "left" + } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 73.3 + }, + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 73.8 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md index a463dcea5d0..ee5d378ba03 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-113 --- - + # --description-- @@ -37,3 +34,47 @@ This preposition is used to indicate involvement or engagement in a particular a ### --feedback-- This part of the term refers to the origin or starting point, in this case, indicating that the software's foundational code is open and accessible to all. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md index 2d227ef6fe5..1e409d23632 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-114 --- - + # --description-- @@ -51,3 +48,47 @@ Think about whether Tom is asking about skills or the reasons behind an activity ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md index ab28bfe2622..395d2fa3522 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-115 --- - + # --description-- @@ -20,7 +17,7 @@ Sophie: Well, I love contributing to open-source projects! I really like the sen ## --sentence-- -`I really like the sense of _ and _.` +`Well, I love contributing to open-source projects! I really like the sense of _ and _.` ## --blanks-- @@ -37,3 +34,47 @@ Describes a group of people who share common interests or values, especially in ### --feedback-- Refers to the act of working with someone to produce or create something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md index c9e678c193b..e321ce0b307 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-116 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Sophie's enjoyment comes from personal recognition or somethi ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md index 7b9101449a3..6a2c024d0c1 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-117 --- - + # --description-- @@ -45,3 +42,47 @@ Refers to the earth or the globe. ### --feedback-- Indicates the act of joining with others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md index d2ba30725da..3917f0f08f3 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-118 --- - + # --description-- @@ -51,3 +48,47 @@ Sophie talks about working as a group. Is it about being famous or doing somethi ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md index a0b608d8342..a41f1bfc8cb 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-119 --- - + # --description-- @@ -20,7 +17,7 @@ Tom: Yeah. I checked some open-source projects, but I admit that I have problems ## --sentence-- -`Yeah. I checked some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` +`Yeah, I checked out some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` ## --blanks-- @@ -37,3 +34,47 @@ This verb means to confess or acknowledge something, often reluctantly. ### --feedback-- This noun is used to describe the quantity or measure of something, in this case, referring to time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 23.34 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.28, + "dialogue": { + "text": "Yeah, I checked out some open-source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.78 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md index 6bcebcf1558..64acf0261ac 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-120 --- - + # --description-- @@ -18,7 +15,7 @@ Tom "Sometimes, it can be so time-consuming." ## --sentence-- -`Sometimes, it can be _ time-_.` +`Sometimes it can be _ time-_.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to emphasize the degree of something, in this case, how much t ### --feedback-- This word describes activities that use up a lot of time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 23.52, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.64, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.14 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md index 2bbaf6f322f..a2ad29fdb26 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-121 --- - + # --description-- @@ -51,3 +48,56 @@ Think about if Tom says the projects are easy or something else. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Yeah, I checked out some open source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 7.46, + "finishTime": 10.10, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 10.60 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md index 26975fa42d5..52145efc9dc 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-122 --- - + # --description-- @@ -21,7 +18,7 @@ For example, if you say: `I decided to learn a new language and practice every d ## --sentence-- -`It can _ a _.` +`I understand, Tom. It can _ a _.` ## --blanks-- @@ -38,3 +35,47 @@ This word is used to talk about something being true or existing. ### --feedback-- This word means a promise to do something or give your time to it, showing you are ready to work hard and keep your word. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 28.72 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md index 4232fcd5dbb..10d1d55dd1f 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-123 --- - + # --description-- @@ -35,3 +32,47 @@ This verb, in this context, means to tolerate or bear, especially when talking a ### --feedback-- This adjective describes something not open or accessible to the general public or kept for the use of a specific person or group. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md index 25acc5b187b..4920280d317 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-124 --- - + # --description-- @@ -35,3 +32,47 @@ This word, ending in `-ing`, means to observe or witness something happening.. ### --feedback-- Also ending in `-ing`, this word is used to describe the state or condition of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md index e4878ae4f6c..feb206c8d3b 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-125 --- - + # --description-- @@ -37,3 +34,51 @@ This word means being open and clear about things. It ends with `-y`, showing it ### --feedback-- This word is about making things easy for everyone to use or get. It ends with `-ity`, showing it's about the state of being accessible. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 32.52, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 5.74, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.24 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md index 2e6e266c6ab..b1b1c1ca42c 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-126 --- - + # --description-- -Sophie expresses her thoughts on open-source projects.. +Sophie expresses her thoughts on open-source projects. # --question-- @@ -51,3 +48,56 @@ Reflect on Sophie's belief in open source and its benefits. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 7.16, + "dialogue": { + "text": "I understand, Tom. It can be a commitment, but I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.56, + "finishTime": 12.10, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 12.60 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md index 9ef306c9252..e6c5fe030c7 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-127 --- - + # --description-- @@ -35,3 +32,51 @@ This noun refers to the quality of being open and clear, especially about proces ### --feedback-- This noun describes something that provides a reason or incentive for someone to act in a certain way or to put in more effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 41.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md index bbaba54e9e1..e05f1982063 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-128 --- - + # --description-- @@ -37,3 +34,51 @@ This verb means to perform an activity or exercise repeatedly or regularly in or ### --feedback-- This noun refers to the action or process of acknowledging someone's efforts, achievements, or qualities. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 41.5, + "finishTimestamp": 47.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.62, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.12 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md index a821137445a..5d15ffd7545 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-129 --- - + # --description-- @@ -35,3 +32,51 @@ This adjective is used to describe something that is very good or impressive. ### --feedback-- This adjective means having the ability, power, or qualities necessary to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 47.54, + "finishTimestamp": 50.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.9, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.4 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md index 76ee25756a6..045d8463245 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-130 --- - + # --description-- @@ -51,3 +48,69 @@ Reflect on whether Tom's attraction to open-source is about tight schedules. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 50.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.42, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.88, + "finishTime": 10.2, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 10.72, + "finishTime": 13.62, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 14.12 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md index f47924c5a21..763fa02b646 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-131 --- - + # --description-- @@ -18,7 +15,7 @@ Sophie: Also, when software becomes obsolete because it's no longer maintained, ## --sentence-- -`Also, when software becomes _, there isn't _ you can do to _ it.` +`Also, when software becomes _ because it's no longer maintained, there isn't _ you can do to _ it.` ## --blanks-- @@ -43,3 +40,51 @@ This word is used to indicate a small amount or degree; not a lot. ### --feedback-- This verb means to keep safe or rescue from harm or danger, in this context, to try and make something usable again. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md index 27b0dbb43cf..a187bb8b293 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-132 --- - + # --description-- @@ -43,3 +40,51 @@ Something that once was true or possible is not the case anymore. ### --feedback-- This contraction of `is not` is used to express the negation of the statement that follows, indicating a limitation or impossibility. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md index 8941733f8b9..ca97fa188f9 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-133 --- - + # --description-- @@ -51,3 +48,51 @@ It can't be used effectively anymore ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md index e225360b121..baadc6b07e8 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-134 --- - + # --description-- @@ -18,7 +15,7 @@ AUDIO REFERENCE: ## --sentence-- -`With open-_, there's always a _ for continuous improvement.` +`With open _, there's always a _ for continuous improvement.` ## --blanks-- @@ -35,3 +32,51 @@ Refers to a model where the source code is available for anyone to see, modify, ### --feedback-- This noun means an opportunity or possibility for something to happen or be done, especially something desirable. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md index 410699942ed..15c83340f6f 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-135 --- - + # --description-- @@ -35,3 +32,51 @@ It indicates an ongoing, unending process of enhancement or development. ### --feedback-- It refers to the act of making something better, more effective, or more efficient. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md index a8c886124e7..7718697bd96 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-137 --- - + # --description-- @@ -27,3 +24,51 @@ Tom: The sustainability of open-source projects is something I'm growing to appr ### --feedback-- It refers to the ongoing development of open-source projects over the long term. it ends with `-y`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md index dcc88c43208..d6ae5f89d89 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-138 --- - + # --description-- -`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time,` means they might not like them at first, but after some timethey start to like them more. +`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time` means they might not like them at first, but after some timethey start to like them more. # --fillInTheBlank-- @@ -34,4 +31,52 @@ This word means being able to continue over time in a good way. ### --feedback-- -Starting to like something more as you understand it better. +Starting to like something more as you understand it better. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md index ecd1d6e7c95..abc9cf2415f 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-139 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on Tom's statement about sustainability and appreciation, not complexity ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md index a6a32b631e8..87c40eaf830 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-140 --- - + # --description-- @@ -47,3 +44,51 @@ This verb means to discover or locate something after searching for it. ### --feedback-- Describes time that is available to use as you wish, not taken up by work or other obligations. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md index bd2fddb1bb4..52d0740b1db 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-141 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on whether Tom's interest is in language learning or engaging in a proje ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md index ea7dbd6dc1e..05dc28f6ddc 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-1 --- - + # --description-- @@ -18,7 +15,7 @@ Listen to what Brian asks Maria. Pay attention to the verbs he uses. ## --sentence-- -`Hey Maria, I _ a question. Do you know what _ the team?` +`Maria, I _ a question. Do you know what _ the team?` ## --blanks-- @@ -35,3 +32,47 @@ This verb is used when someone is in possession of something or wants to express ### --feedback-- This word means to give someone a reason to do something. This verb in conjugated in the third person. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 3.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.02 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md index d39e86e67e9..ef6b246a2e4 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-2 --- - + # --description-- @@ -39,3 +36,47 @@ This word is used to indicate the reason or cause of something. It is conjugated ### --feedback-- It ends with `-ed` because it's an adjective that comes from a verb. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 3.92, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.50, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.00 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md index 5c39c1c7312..050241fa5e6 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-3 --- - + # --description-- @@ -20,7 +17,7 @@ Listen to the audio and complete the sentence. ## --sentence-- -`Hey Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` +`Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` ## --blanks-- @@ -37,3 +34,56 @@ Think about the word that means to give someone a reason to do something right n ### --feedback-- This word describes how someone feels when they have a reason or desire to do something. This word ends with `-ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md index 4a6aa89ed04..90a6bbe82b3 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md @@ -5,20 +5,17 @@ challengeType: 19 dashedName: task-4 --- - + # --description-- -In the dialogue, Brian asks three questions but they are all connected. +In the dialogue, Brian asks a couple of related questions. # --question-- ## --text-- -`What is Brian asking Maria about?` +What is Brian asking Maria about? ## --answers-- @@ -51,3 +48,56 @@ The conversation is centered around motivation, not the physical location of whe ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md index 3e923e63532..f725307b614 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-21 --- - + # --description-- @@ -36,3 +33,46 @@ This word means working together with others on a project or task. It ends with This word means thinking of many ideas together with a group of people. It ends with `-ing`. +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md index 1c4102ed1d3..2522ee2b5e1 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-22 --- - + # --description-- @@ -51,3 +48,47 @@ Maria refers to her creative team, not her friends, as her collaborators. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.28 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.28 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md index c3f28429a68..ab0e4646869 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-23 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to create or produce something, especially ideas or solutions. ### --feedback-- This word refers to ideas or plans that are used in thinking, discussion, or creating something new. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 41.84, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.78, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.28 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md index c2510030f2c..8795bdf6d10 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-24 --- - + # --description-- @@ -51,3 +48,56 @@ Collaborating with the creative team ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.70, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.14, + "finishTime": 7.92, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 8.42 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md index 3c6ee35860c..b801e7efce9 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-25 --- - + # --description-- @@ -35,3 +32,47 @@ This word means working together with others to achieve a goal. This word is cap ### --feedback-- This word refers to the use of imagination or original ideas to create something. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 48.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.22 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md index a9680b0824a..75c938c595f 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-27 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to find something or someone without planning to, especially pro ### --feedback-- This word is used for problems with machines or computers that need special knowledge to understand or fix. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md index 5ee0b89f981..89a97ac83d7 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-29 --- - + # --description-- @@ -27,3 +24,47 @@ When something is `frustrating`, it makes you feel upset or annoyed because you ### --feedback-- This word is used when something makes you feel upset or annoyed because it is difficult or impossible to deal with. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 53.02, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.50, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.00 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md index 1f9e7b21387..02733f0f66c 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-30 --- - + # --description-- @@ -51,3 +48,65 @@ Does having many ideas make Brian frustrated, or is it something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 5.02, + "finishTime": 9.34, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 9.74, + "finishTime": 11.24, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 11.74 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md index 3dddb17e8ef..47e9d5633b4 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-31 --- - + # --description-- @@ -35,3 +32,47 @@ This word means little problems with things like computers or apps. When there a ### --feedback-- This word means to make an effort to do something, especially when it's hard. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md index fe21921444c..ce9ced73581 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-33 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether taking a break is mentioned as a way to deal with glitches. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md index 69d94c303e5..7c44898f823 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-34 --- - + # --description-- @@ -37,3 +34,47 @@ This word means being very excited or eager about something. It's like when you ### --feedback-- This word means finding a way to fix a problem. It's like when you figure out the answer to a difficult question. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.76, + "finishTimestamp": 65.66 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.90, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.40 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md index 0365cb0e9f0..17d79cd22ec 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md @@ -6,10 +6,7 @@ dashedName: task-36 --- - + # --description-- @@ -52,3 +49,56 @@ Reflect on whether the speed of solving problems is what Maria highlights as mot ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.96, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.7, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.16, + "finishTime": 8.84, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 9.34 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md index 7525fdadd5f..39df7aceed5 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-37 --- - + # --description-- @@ -18,7 +15,7 @@ In this part of the conversation, Brian talks about how the talk made him feel a ## --sentence-- -`Yeah. Wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` +`Yeah, wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` ## --blanks-- @@ -35,3 +32,47 @@ This word means something that gives you energy or a reason to do something. It' ### --feedback-- This word means giving something that you have to others. It's like when you tell someone your ideas or feelings. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 70.38, + "finishTimestamp": 76.10 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 6.72, + "dialogue": { + "text": "Yeah, wow. You know what? This was a really motivating talk. Thanks for sharing your thoughts.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.22 + } + ] +} +``` diff --git a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md index 6bb2b29cd3b..b1bcee11103 100644 --- a/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md +++ b/curriculum/challenges/german/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-136 --- - + # --description-- @@ -51,3 +48,60 @@ Reflect on the connection between updates and user experience Sophie suggests. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.02, + "finishTime": 10.02, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/italian/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md b/curriculum/challenges/italian/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md index f7a1e151640..3609942a0bd 100644 --- a/curriculum/challenges/italian/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md +++ b/curriculum/challenges/italian/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md @@ -26,7 +26,7 @@ Ecco un esempio: # --instructions-- -È il momento di prendersi una pausa da Camper Cat e fare la conoscenza di camper Zersiax (@zersiax), un campione in fatto di accessibilità, e un utilizzatore di screen reader. Per ascoltare una clip del suo screen reader, aggiungi un elemento `audio` dopo l'elemento `p`. Includi l'attributo `controls`. Quindi aggiungi un elemento `source` all'interno dei tag `audio` con l'attributo `src` impostato su `https://s3.amazonaws.com/freecodecamp/screen-reader.mp3` e l'attributo `type` impostato su `"audio/mpeg"`. +È il momento di prendersi una pausa da Camper Cat e fare la conoscenza di camper Zersiax (@zersiax), un campione in fatto di accessibilità, e un utilizzatore di screen reader. Per ascoltare una clip del suo screen reader, aggiungi un elemento `audio` dopo l'elemento `p`. Includi l'attributo `controls`. Then place a `source` element inside the `audio` tags with the `src` attribute set to `https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3` and `type` attribute set to `"audio/mpeg"`. **Nota:** la clip audio potrebbe sembrare veloce e difficile da capire, ma questa è la velocità normale per gli utenti di screen reader. @@ -70,7 +70,7 @@ Il valore dell'attributo `src` all'interno del tag `source` dovrebbe corrisponde ```js assert( $('source').attr('src') === - 'https://s3.amazonaws.com/freecodecamp/screen-reader.mp3' + 'https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3' ); ``` @@ -108,7 +108,7 @@ assert($('source').attr('type') === 'audio/mpeg');

A sound clip of Zersiax's screen reader in action.

diff --git a/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md b/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md index 9c46cd1c618..2716fcb3e79 100644 --- a/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md +++ b/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md @@ -93,7 +93,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -186,7 +186,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md b/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md index 3c65c5f8444..88f3b4131d4 100644 --- a/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md +++ b/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md @@ -102,7 +102,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -198,7 +198,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md b/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md index f6744882235..f597fd8a574 100644 --- a/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md +++ b/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md @@ -95,7 +95,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -190,7 +190,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md b/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md index 597533369b8..d571827383e 100644 --- a/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md +++ b/curriculum/challenges/italian/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md @@ -98,7 +98,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -192,7 +192,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md b/curriculum/challenges/italian/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md new file mode 100644 index 00000000000..47a2bcd6988 --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md @@ -0,0 +1,887 @@ +--- +id: 5e44413e903586ffb414c94e +title: Build a Budget App Project +challengeType: 23 +forumTopicId: 462361 +dashedName: build-a-budget-app-project +--- + +# --description-- + +Complete the `Category` class. It should be able to instantiate objects based on different budget categories like *food*, *clothing*, and *entertainment*. When objects are created, they are passed in the name of the category. The class should have an instance variable called `ledger` that is a list. The class should also contain the following methods: + +- A `deposit` method that accepts an amount and description. If no description is given, it should default to an empty string. The method should append an object to the ledger list in the form of `{"amount": amount, "description": description}`. +- A `withdraw` method that is similar to the `deposit` method, but the amount passed in should be stored in the ledger as a negative number. If there are not enough funds, nothing should be added to the ledger. This method should return `True` if the withdrawal took place, and `False` otherwise. +- A `get_balance` method that returns the current balance of the budget category based on the deposits and withdrawals that have occurred. +- A `transfer` method that accepts an amount and another budget category as arguments. The method should add a withdrawal with the amount and the description "Transfer to [Destination Budget Category]". The method should then add a deposit to the other budget category with the amount and the description "Transfer from [Source Budget Category]". If there are not enough funds, nothing should be added to either ledgers. This method should return `True` if the transfer took place, and `False` otherwise. +- A `check_funds` method that accepts an amount as an argument. It returns `False` if the amount is greater than the balance of the budget category and returns `True` otherwise. This method should be used by both the `withdraw` method and `transfer` method. + +When the budget object is printed it should display: + +- A title line of 30 characters where the name of the category is centered in a line of `*` characters. +- A list of the items in the ledger. Each line should show the description and amount. The first 23 characters of the description should be displayed, then the amount. The amount should be right aligned, contain two decimal places, and display a maximum of 7 characters. +- A line displaying the category total. + +Here is an example usage: + +```py +food = Category("Food") +food.deposit(1000, "deposit") +food.withdraw(10.15, "groceries") +food.withdraw(15.89, "restaurant and more food for dessert") +clothing = Category("Clothing") +food.transfer(50, clothing) +print(food) +``` + +And here is an example of the output: + +```bash +*************Food************* +initial deposit 1000.00 +groceries -10.15 +restaurant and more foo -15.89 +Transfer to Clothing -50.00 +Total: 923.96 +``` + +Besides the `Category` class, create a function (outside of the class) called `create_spend_chart` that takes a list of categories as an argument. It should return a string that is a bar chart. + +The chart should show the percentage spent in each category passed in to the function. The percentage spent should be calculated only with withdrawals and not with deposits. Down the left side of the chart should be labels 0 - 100. The "bars" in the bar chart should be made out of the "o" character. The height of each bar should be rounded down to the nearest 10. The horizontal line below the bars should go two spaces past the final bar. Each category name should be written vertically below the bar. There should be a title at the top that says "Percentage spent by category". + +This function will be tested with up to four categories. + +Look at the example output below very closely and make sure the spacing of the output matches the example exactly. + +```bash +Percentage spent by category +100| + 90| + 80| + 70| + 60| o + 50| o + 40| o + 30| o + 20| o o + 10| o o o + 0| o o o + ---------- + F C A + o l u + o o t + d t o + h + i + n + g +``` + +# --hints-- + +The `deposit` method should create a specific object in the ledger instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit(self): + self.food.deposit(900, "deposit") + actual = self.food.ledger[0] + expected = {"amount": 900, "description": "deposit"} + self.assertEqual(actual, expected, 'Expected "deposit" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `deposit` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit_no_description(self): + self.food.deposit(45.56) + actual = self.food.ledger[0] + expected = {"amount": 45.56, "description": ""} + self.assertEqual(actual, expected, 'Expected calling "deposit" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should create a specific object in the `ledger` instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": "milk, cereal, eggs, bacon, bread"} + self.assertEqual(actual, expected, 'Expected "withdraw" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `withdraw` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": ""} + self.assertEqual(actual, expected, 'Expected "withdraw" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `True` if the withdrawal took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + self.assertEqual(good_withdraw, True, 'Expected "withdraw" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `food.deposit(900, "deposit")` and `food.withdraw(45.67, "milk, cereal, eggs, bacon, bread")` should return a balance of `854.33`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_get_balance(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.get_balance() + expected = 854.33 + self.assertEqual(actual, expected, 'Expected balance to be 854.33') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `transfer` method on a category object should create a specific ledger item in that category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.food.ledger[2] + expected = {"amount": -transfer_amount, "description": "Transfer to Entertainment"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `True` if the transfer took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + self.assertEqual(good_transfer, True, 'Expected "transfer" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `transfer` on a category object should reduce the balance in the category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + food_balance_before = self.food.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + food_balance_after = self.food.get_balance() + self.assertEqual(food_balance_before - food_balance_after, transfer_amount, 'Expected "transfer" method to reduce balance in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should increase the balance of the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + entertainment_balance_before = self.entertainment.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + entertainment_balance_after = self.entertainment.get_balance() + self.assertEqual(entertainment_balance_after - entertainment_balance_before, transfer_amount, 'Expected "transfer" method to increase balance in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should create a specific ledger item in the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.entertainment.ledger[0] + expected = {"amount": transfer_amount, "description": "Transfer from Food"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `False` if the amount passed to the method is greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(20) + expected = False + self.assertEqual(actual, expected, 'Expected "check_funds" method to be False') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `True` if the amount passed to the method is not greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(10) + expected = True + self.assertEqual(actual, expected, 'Expected "check_funds" method to be True') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `False` if the withdrawal didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_funds(self): + self.food.deposit(100, "deposit") + good_withdraw = self.food.withdraw(100.10) + self.assertEqual(good_withdraw, False, 'Expected "withdraw" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `False` if the transfer didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer_no_funds(self): + self.food.deposit(100, "deposit") + good_transfer = self.food.transfer(200, self.entertainment) + self.assertEqual(good_transfer, False, 'Expected "transfer" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Printing a `Category` instance should give a different string representation of the object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_to_string(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + self.food.transfer(20, self.entertainment) + actual = str(self.food) + expected = "*************Food*************\\ndeposit 900.00\\nmilk, cereal, eggs, bac -45.67\\nTransfer to Entertainme -20.00\\nTotal: 834.33" + self.assertEqual(actual, expected, 'Expected different string representation of object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +` + const out = runPython(testCode); + assert(out); + } +}) +``` + +`create_spend_chart` should print a different chart representation. Check that all spacing is exact. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + self.business = budget.Category("Business") + + def test_create_spend_chart(self): + self.food.deposit(900, "deposit") + self.entertainment.deposit(900, "deposit") + self.business.deposit(900, "deposit") + self.food.withdraw(105.55) + self.entertainment.withdraw(33.40) + self.business.withdraw(10.99) + actual = budget.create_spend_chart([self.business, self.food, self.entertainment]) + expected = "Percentage spent by category\\n100| \\n 90| \\n 80| \\n 70| o \\n 60| o \\n 50| o \\n 40| o \\n 30| o \\n 20| o o \\n 10| o o \\n 0| o o o \\n ----------\\n B F E \\n u o n \\n s o t \\n i d e \\n n r \\n e t \\n s a \\n s i \\n n \\n m \\n e \\n n \\n t " + self.assertEqual(actual, expected, 'Expected different chart representation. Check that all spacing is exact.') +`); + + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Category: + pass + +def create_spend_chart(categories): + pass +``` + +# --solutions-- + +```py +class Category: + + def __init__(self, name): + self.name = name + self.ledger = [] + self.balance = 0 + self.spent = 0 + + def __str__(self): + first_line = f'{self.name.center(30, "*")}\n' + lines = '' + total = f'Total: {format(self.balance, ".2f")}' + + for n in range(len(self.ledger)): + descr = self.ledger[n]["description"][:23] + am = format(float(self.ledger[n]["amount"]), ".2f")[:7] + lines = lines + f'{descr:<23}{am:>7}\n' + + return f'{first_line}{lines}{total}' + + def deposit(self, amount, description=''): + self.ledger.append({ + 'amount': float(amount), + 'description': description + }) + self.balance = self.balance + float(amount) + + def withdraw(self, amount, description=''): + if self.check_funds(amount): + self.ledger.append({ + 'amount': -float(amount), + 'description': description + }) + self.balance = self.balance - float(amount) + self.spent = self.spent + float(amount) + return True + else: + return False + + def get_balance(self): + return self.balance + + def transfer(self, amount, category): + if self.check_funds(amount): + # withdraw + self.ledger.append({ + 'amount': -float(amount), + 'description': f'Transfer to {category.name}' + }) + self.balance = self.balance - float(amount) + # deposit + category.deposit(amount, f'Transfer from {self.name}') + + return True + else: + return False + + def check_funds(self, amount): + if float(amount) > self.balance: + return False + else: + return True + + +def create_spend_chart(categories): + total_expenses = 0 + obj = {} + col1 = [] + str = [] + final_str = 'Percentage spent by category\n' + label_max_length = 0 + label_strings = [] + + for category in categories: + total_expenses = total_expenses + category.spent + obj[category.name] = {'expenses': category.spent} + obj[category.name]['label'] = list(category.name) + if len(obj[category.name]['label']) > label_max_length: + label_max_length = len(obj[category.name]['label']) + + for category in categories: + obj[category.name]['percent'] = ( + (category.spent / total_expenses * 100) // 10) * 10 + obj[category.name]['column'] = [] + for i in range(0, 110, 10): + if obj[category.name]['percent'] >= i: + obj[category.name]['column'].insert(0, 'o') + else: + obj[category.name]['column'].insert(0, ' ') + + for i in range(0, 110, 10): + col1.insert(0, i) + + for i in range(11): + str.append("") + for key in obj: + str[i] += (f'{obj[key]["column"][i]} ') + final_str += f'{col1[i]:>3}| {str[i]}\n' + final_str += f' {"-"*(1+3*len(obj))}\n ' + + for i in range(label_max_length): + label_strings.append(' ') + for k in obj: + if len(obj[k]['label']) < label_max_length: + obj[k]['label'].extend( + f'{" "*(label_max_length-len(obj[k]["label"]))}') + + label_strings[i] += f'{obj[k]["label"][i]} ' + if i < label_max_length - 1: + label_strings[i] += '\n ' + final_str += label_strings[i] + + print(final_str) + return (final_str) + +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md b/curriculum/challenges/italian/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md new file mode 100644 index 00000000000..ef719adc3a7 --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md @@ -0,0 +1,869 @@ +--- +id: 5e444147903586ffb414c94f +title: Build a Polygon Area Calculator Project +challengeType: 23 +forumTopicId: 462363 +dashedName: build-a-polygon-area-calculator-project +--- + +# --description-- + +In this project you will use object oriented programming to create a `Rectangle` class and a `Square` class. The `Square` class should be a subclass of `Rectangle`, and inherit its methods and attributes. + +## Rectangle class + +When a Rectangle object is created, it should be initialized with `width` and `height` attributes. The class should also contain the following methods: + +- `set_width` +- `set_height` +- `get_area`: Returns area (`width * height`) +- `get_perimeter`: Returns perimeter (`2 * width + 2 * height`) +- `get_diagonal`: Returns diagonal (`(width ** 2 + height ** 2) ** .5`) +- `get_picture`: Returns a string that represents the shape using lines of "\*". The number of lines should be equal to the height and the number of "\*" in each line should be equal to the width. There should be a new line (`\n`) at the end of each line. If the width or height is larger than 50, this should return the string: "Too big for picture.". +- `get_amount_inside`: Takes another shape (square or rectangle) as an argument. Returns the number of times the passed in shape could fit inside the shape (with no rotations). For instance, a rectangle with a width of 4 and a height of 8 could fit in two squares with sides of 4. + +Additionally, if an instance of a `Rectangle` is represented as a string, it should look like: `Rectangle(width=5, height=10)` + +## Square class + +The `Square` class should be a subclass of `Rectangle`. When a `Square` object is created, a single side length is passed in. The `__init__` method should store the side length in both the `width` and `height` attributes from the `Rectangle` class. + +The `Square` class should be able to access the `Rectangle` class methods but should also contain a `set_side` method. If an instance of a `Square` is represented as a string, it should look like: `Square(side=9)` + +Additionally, the `set_width` and `set_height` methods on the `Square` class should set both the width and height. + +## Usage example + +```py +rect = Rectangle(10, 5) +print(rect.get_area()) +rect.set_height(3) +print(rect.get_perimeter()) +print(rect) +print(rect.get_picture()) + +sq = Square(9) +print(sq.get_area()) +sq.set_side(4) +print(sq.get_diagonal()) +print(sq) +print(sq.get_picture()) + +rect.set_height(8) +rect.set_width(16) +print(rect.get_amount_inside(sq)) +``` + +That code should return: + +```bash +50 +26 +Rectangle(width=10, height=3) +********** +********** +********** + +81 +5.656854249492381 +Square(side=4) +**** +**** +**** +**** + +8 +``` + +# --hints-- + +The `Square` class should be a subclass of the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_subclass(self): + actual = issubclass(shape_calculator.Square, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a subclass of the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `Square` class should be a distinct class from the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_distinct_classes(self): + actual = shape_calculator.Square is not shape_calculator.Rectangle + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a distinct class from the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +A square object should be an instance of the `Square` class and the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_is_square_and_rectangle(self): + actual = isinstance(self.sq, shape_calculator.Square) and isinstance(self.sq, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected square object to be an instance of the Square class and the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Rectangle(3, 6)` should be `Rectangle(width=3, height=6)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_string(self): + actual = str(self.rect) + expected = "Rectangle(width=3, height=6)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle to be "Rectangle(width=3, height=6)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Square(5)` should be `Square(side=5)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_string(self): + actual = str(self.sq) + expected = "Square(side=5)" + self.assertEqual(actual, expected, 'Expected string representation of square to be "Square(side=5)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_area()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_area(self): + actual = self.rect.get_area() + expected = 18 + self.assertEqual(actual, expected, 'Expected area of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_area()` should return `25`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_area(self): + actual = self.sq.get_area() + expected = 25 + self.assertEqual(actual, expected, 'Expected area of square to be 25') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_perimeter()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_perimeter(self): + actual = self.rect.get_perimeter() + expected = 18 + self.assertEqual(actual, expected, 'Expected perimeter of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_perimeter()` should return `20`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_perimeter(self): + actual = self.sq.get_perimeter() + expected = 20 + self.assertEqual(actual, expected, 'Expected perimeter of square to be 20') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_diagonal()` should return `6.708203932499369`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_diagonal(self): + actual = self.rect.get_diagonal() + expected = 6.708203932499369 + self.assertEqual(actual, expected, 'Expected diagonal of rectangle to be 6.708203932499369') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_diagonal()` should return `7.0710678118654755`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_diagonal(self): + actual = self.sq.get_diagonal() + expected = 7.0710678118654755 + self.assertEqual(actual, expected, 'Expected diagonal of square to be 7.0710678118654755') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Rectangle` class should have a different string representation after setting new values. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_set_attributes(self): + self.rect.set_width(7) + self.rect.set_height(8) + actual = str(self.rect) + expected = "Rectangle(width=7, height=8)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle after setting new values to be "Rectangle(width=7, height=8)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_side()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_side(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_width()` or `set_height()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_height(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') + self.sq.set_width(4) + actual = str(self.sq) + expected = "Square(side=4)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting width to be "Square(side=4)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Rectangle` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_picture(self): + self.rect.set_width(7) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "*******\\n*******\\n*******\\n" + self.assertEqual(actual, expected, 'Expected rectangle picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Square` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_picture(self): + self.sq.set_side(2) + actual = self.sq.get_picture() + expected = "**\\n**\\n" + self.assertEqual(actual, expected, 'Expected square picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return the string `Too big for picture.` if the `width` or `height` attributes are larger than `50`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_big_picture(self): + self.rect.set_width(51) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "Too big for picture." + self.assertEqual(actual, expected, 'Expected message: "Too big for picture."') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(15,10).get_amount_inside(Square(5))` should return `6`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + self.sq = shape_calculator.Square(5) + + def test_get_amount_inside(self): + self.rect.set_height(10) + self.rect.set_width(15) + actual = self.rect.get_amount_inside(self.sq) + expected = 6 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 6.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(4,8).get_amount_inside(Rectangle(3, 6))` should return `1`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_two_rectangles(self): + rect2 = shape_calculator.Rectangle(4, 8) + actual = rect2.get_amount_inside(self.rect) + expected = 1 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 1.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(2,3).get_amount_inside(Rectangle(3, 6))` should return `0`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_none(self): + rect2 = shape_calculator.Rectangle(2, 3) + actual = rect2.get_amount_inside(self.rect) + expected = 0 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 0.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Rectangle: + pass + +class Square: + pass +``` + +# --solutions-- + +```py +class Rectangle: + def __init__(self, width, height): + self.width = width + self.height = height + + def __str__(self): + return f'Rectangle(width={self.width}, height={self.height})' + + def set_width(self, width): + self.width = width + + def set_height(self, height): + self.height = height + + def get_area(self): + area = self.width * self.height + return area + + def get_perimeter(self): + perimeter = self.width * 2 + self.height * 2 + return perimeter + + def get_diagonal(self): + diagonal = (self.width ** 2 + self.height ** 2) ** 0.5 + return diagonal + + def get_picture(self): + if self.width < 50 and self.height < 50: + picture = f'{"*"*self.width}\n'*self.height + return picture + else: + return 'Too big for picture.' + + def get_amount_inside(self, polygon): + h_number = self.height // polygon.height + w_number = self.width // polygon.width + repetition = h_number * w_number + return repetition + + +class Square(Rectangle): + def __init__(self, side): + self.width = side + self.height = side + + def __str__(self): + return f'Square(side={self.width})' + + def set_width(self, side): + self.width = side + self.height = side + + def set_height(self, side): + self.height = side + self.width = side + + def set_side(self,side): + self.width = side + self.height = side + +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md b/curriculum/challenges/italian/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md new file mode 100644 index 00000000000..94cf5c682de --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md @@ -0,0 +1,300 @@ +--- +id: 5e44414f903586ffb414c950 +title: Build a Probability Calculator Project +challengeType: 23 +forumTopicId: 462364 +dashedName: build-a-probability-calculator-project +--- + +# --description-- + +Suppose there is a hat containing 5 blue balls, 4 red balls, and 2 green balls. What is the probability that a random draw of 4 balls will contain at least 1 red ball and 2 green balls? While it would be possible to calculate the probability using advanced mathematics, an easier way is to write a program to perform a large number of experiments to estimate an approximate probability. + +For this project, you will write a program to determine the approximate probability of drawing certain balls randomly from a hat. + +First, create a `Hat` class in `main.py`. The class should take a variable number of arguments that specify the number of balls of each color that are in the hat. For example, a class object could be created in any of these ways: + +```py +hat1 = Hat(yellow=3, blue=2, green=6) +hat2 = Hat(red=5, orange=4) +hat3 = Hat(red=5, orange=4, black=1, blue=0, pink=2, striped=9) +``` + +A hat will always be created with at least one ball. The arguments passed into the hat object upon creation should be converted to a `contents` instance variable. `contents` should be a list of strings containing one item for each ball in the hat. Each item in the list should be a color name representing a single ball of that color. For example, if your hat is `{"red": 2, "blue": 1}`, `contents` should be `["red", "red", "blue"]`. + +The `Hat` class should have a `draw` method that accepts an argument indicating the number of balls to draw from the hat. This method should remove balls at random from `contents` and return those balls as a list of strings. The balls should not go back into the hat during the draw, similar to an urn experiment without replacement. If the number of balls to draw exceeds the available quantity, return all the balls. + +Next, create an `experiment` function in `main.py` (not inside the `Hat` class). This function should accept the following arguments: + +- `hat`: A hat object containing balls that should be copied inside the function. +- `expected_balls`: An object indicating the exact group of balls to attempt to draw from the hat for the experiment. For example, to determine the probability of drawing 2 blue balls and 1 red ball from the hat, set `expected_balls` to `{"blue":2, "red":1}`. +- `num_balls_drawn`: The number of balls to draw out of the hat in each experiment. +- `num_experiments`: The number of experiments to perform. (The more experiments performed, the more accurate the approximate probability will be.) + +The `experiment` function should return a probability. + +For example, if you want to determine the probability of getting at least two red balls and one green ball when you draw five balls from a hat containing six black, four red, and three green. To do this, you will perform `N` experiments, count how many times `M` you get at least two red balls and one green ball, and estimate the probability as `M/N`. Each experiment consists of starting with a hat containing the specified balls, drawing several balls, and checking if you got the balls you were attempting to draw. + +Here is how you would call the `experiment` function based on the example above with 2000 experiments: + +```py +hat = Hat(black=6, red=4, green=3) +probability = experiment(hat=hat, + expected_balls={"red":2,"green":1}, + num_balls_drawn=5, + num_experiments=2000) +``` + +The output would be something like this: + +```bash +0.356 +``` + +Since this is based on random draws, the probability will be slightly different each time the code is run. + +_Hint: Consider using the modules that are already imported at the top. Do not initialize random seed within the file._ + + +# --hints-- + +Creation of `hat` object should add correct contents. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_class_contents(self): + hat = probability_calculator.Hat(red=3,blue=2) + actual = hat.contents + expected = ["red","red","red","blue","blue"] + self.assertEqual(actual, expected, 'Expected creation of hat object to add correct contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method in `hat` class should reduce number of items in contents. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw(self): + hat = probability_calculator.Hat(red=5,blue=2) + actual = hat.draw(2) + expected = ['blue', 'red'] + self.assertEqual(actual, expected, 'Expected hat draw to return two random items from hat contents.') + actual = len(hat.contents) + expected = 5 + self.assertEqual(actual, expected, 'Expected hat draw to reduce number of items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method should behave correctly when the number of balls to extract is bigger than the number of balls in the hat. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw_2(self): + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + actual = hat.draw(20) + expected = ['yellow', 'yellow', 'yellow', 'yellow', 'yellow', 'red', 'green', 'green', 'green', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'test'] + self.assertEqual(actual, expected, 'Expected hat draw to return all items from hat contents.') + actual = len(hat.contents) + expected = 0 + self.assertEqual(actual, expected, 'Expected hat draw to leave no items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `experiment` method should return a different probability. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_prob_experiment(self): + hat = probability_calculator.Hat(blue=3,red=2,green=6) + probability = probability_calculator.experiment(hat=hat, expected_balls={"blue":2,"green":1}, num_balls_drawn=4, num_experiments=1000) + actual = probability + expected = 0.272 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + probability = probability_calculator.experiment(hat=hat, expected_balls={"yellow":2,"blue":3,"test":1}, num_balls_drawn=20, num_experiments=100) + actual = probability + expected = 1.0 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +# --seed-- + +## --seed-contents-- + +```py +import copy +import random + +class Hat: + pass + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + pass +``` + +# --solutions-- + +```py +import copy +import random + +class Hat: + def __init__(self, **hat): + self.hat = hat + contents = [] + for i in hat: + for j in range(hat[i]): + contents.append(i) + self.contents = contents + + + def draw(self, number): + drawn = [] + if number >= len(self.contents): + drawn.extend(self.contents) + self.contents = [] + else: + for i in range(number): + drawn.append( + self.contents.pop(random.randrange(len(self.contents))) + ) + return drawn + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + expected_balls_list = [] + drawn_list = [] + success = 0 + for i in expected_balls: + for j in range(expected_balls[i]): + expected_balls_list.append(i) + for j in range(num_experiments): + hat_copy = copy.deepcopy(hat) + drawn_list.append(hat_copy.draw(num_balls_drawn)) + exp_ball_list_copy = expected_balls_list[:] + for k in range(len(drawn_list[j])): + try: + ind = exp_ball_list_copy.index(drawn_list[j][k]) + exp_ball_list_copy.pop(ind) + except: + continue + if len(exp_ball_list_copy) == 0: + success += 1 + probability = success/num_experiments + return probability +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md b/curriculum/challenges/italian/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md new file mode 100644 index 00000000000..05e60f0b74a --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md @@ -0,0 +1,582 @@ +--- +id: 5e444136903586ffb414c94d +title: Build a Time Calculator Project +challengeType: 23 +forumTopicId: 462360 +dashedName: build-a-time-calculator-project +--- + +# --description-- + +Write a function named `add_time` that takes in two required parameters and one optional parameter: + +- a start time in the 12-hour clock format (ending in AM or PM) +- a duration time that indicates the number of hours and minutes +- (optional) a starting day of the week, case insensitive + +The function should add the duration time to the start time and return the result. + +If the result will be the next day, it should show `(next day)` after the time. If the result will be more than one day later, it should show `(n days later)` after the time, where "n" is the number of days later. + +If the function is given the optional starting day of the week parameter, then the output should display the day of the week of the result. The day of the week in the output should appear after the time and before the number of days later. + +Below are some examples of different cases the function should handle. Pay close attention to the spacing and punctuation of the results. + +```py +add_time('3:00 PM', '3:10') +# Returns: 6:10 PM + +add_time('11:30 AM', '2:32', 'Monday') +# Returns: 2:02 PM, Monday + +add_time('11:43 AM', '00:20') +# Returns: 12:03 PM + +add_time('10:10 PM', '3:30') +# Returns: 1:40 AM (next day) + +add_time('11:43 PM', '24:20', 'tueSday') +# Returns: 12:03 AM, Thursday (2 days later) + +add_time('6:30 PM', '205:12') +# Returns: 7:42 AM (9 days later) +``` + +Do not import any Python libraries. Assume that the start times are valid times. The minutes in the duration time will be a whole number less than 60, but the hour can be any whole number. + +# --hints-- +Calling `add_time('3:30 PM', '2:12')` should return `'5:42 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +import time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period(self): + actual = time_calculator.add_time("3:30 PM", "2:12") + expected = "5:42 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12" to return "5:42 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:55 AM', '3:12')` should return `'3:07 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_different_period(self): + actual = time_calculator.add_time("11:55 AM", "3:12") + expected = "3:07 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:55 AM", "3:12" to return "3:07 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected time to end with `'(next day)'` when it is the next day. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_next_day(self): + actual = time_calculator.add_time("9:15 PM", "5:30") + expected = "2:45 AM (next day)" + self.assertEqual(actual, expected, 'Expected time to end with "(next day)" when it is the next day.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected period to change from `AM` to `PM` at `12:00`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_period_change_at_twelve(self): + actual = time_calculator.add_time("11:40 AM", "0:25") + expected = "12:05 PM" + self.assertEqual(actual, expected, 'Expected period to change from AM to PM at 12:00') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00')` should return `'2:59 AM (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four(self): + actual = time_calculator.add_time("2:59 AM", "24:00") + expected = "2:59 AM (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00" to return "2:59 AM (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05')` should return `'12:04 AM (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later(self): + actual = time_calculator.add_time("11:59 PM", "24:05") + expected = "12:04 AM (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05" to return "12:04 AM (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02')` should return `'6:18 AM (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration(self): + actual = time_calculator.add_time("8:16 PM", "466:02") + expected = "6:18 AM (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02" to return "6:18 AM (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected adding `0:00` to return the initial time. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_no_change(self): + actual = time_calculator.add_time("5:01 AM", "0:00") + expected = "5:01 AM" + self.assertEqual(actual, expected, 'Expected adding 0:00 to return initial time.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('3:30 PM', '2:12', 'Monday')`should return `'5:42 PM, Monday'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period_with_day(self): + actual = time_calculator.add_time("3:30 PM", "2:12", "Monday") + expected = "5:42 PM, Monday" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12", "Monday" to return "5:42 PM, Monday"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00', 'saturDay')` should return `'2:59 AM, Sunday (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four_with_day(self): + actual = time_calculator.add_time("2:59 AM", "24:00", "saturDay") + expected = "2:59 AM, Sunday (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00", "saturDay" to return "2:59 AM, Sunday (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05', 'Wednesday')` should return `'12:04 AM, Friday (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later_with_day(self): + actual = time_calculator.add_time("11:59 PM", "24:05", "Wednesday") + expected = "12:04 AM, Friday (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05", "Wednesday" to return "12:04 AM, Friday (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02', 'tuesday')`should return `'6:18 AM, Monday (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration_with_day(self): + actual = time_calculator.add_time("8:16 PM", "466:02", "tuesday") + expected = "6:18 AM, Monday (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02", "tuesday" to return "6:18 AM, Monday (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def add_time(start, duration): + + + + + + return new_time +``` + +# --solutions-- + +```py +def add_time(start, duration, day=''): + start_arr = start[0:-3].split(':') + dur_arr = duration.split(':') + tail = '' + # converting to 24h format + if 'AM' in start: + if start_arr[0] == '12': + start_arr[0] = '00' + elif 'PM' in start: + if start_arr[0] == '12': + start_arr[0] = '12' + else: + start_arr[0] = f'{int(start_arr[0]) + 12}' + + # adding minutes + sum_m = int(start_arr[1]) + int(dur_arr[1]) + if sum_m > 59: + + if (sum_m - 60 * (sum_m//60)) < 10: + mins = f'0{(sum_m - 60 * (sum_m//60))}' + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + + else: + mins = sum_m - 60 * (sum_m//60) + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + else: + if sum_m < 10: + mins = f'0{sum_m}' + else: + mins = sum_m + + #adding hours + sum_h = int(start_arr[0]) + int(dur_arr[0]) + if sum_h < 24: + hours= sum_h + #time_24 = f'{hours}:{mins}' + else: + days_after = sum_h//24 + if days_after == 1: + hours = sum_h - 24 + tail = ' (next day)' + else: + hours = sum_h - 24 * days_after + tail = f' ({days_after} days later)' + + #converting back to AM/PM + if hours == 0: + hours = 12 + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + elif hours < 12: + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + else: + if hours > 12: + hours = hours - 12 + time = f'{hours}:{mins} PM' + final_time = f'{time}{tail}' + + #days of the week + week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] + if day: + day = day.capitalize() + if not tail: + final_time = f'{time}, {day}' + elif tail == ' (next day)': + index = week.index(day) + 1 + if index == 7: + index = 0 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + elif tail: + index = (week.index(day) + days_after) % 7 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + + + print('\n') + print(final_time) + print('\n') + return final_time + +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md b/curriculum/challenges/italian/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md new file mode 100644 index 00000000000..4f112fd73c5 --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md @@ -0,0 +1,248 @@ +--- +id: 5e44412c903586ffb414c94c +title: Build an Arithmetic Formatter Project +challengeType: 23 +forumTopicId: 462359 +dashedName: build-an-arithmetic-formatter-project +--- + +# --description-- + +Students in primary school often arrange arithmetic problems vertically to make them easier to solve. For example, "235 + 52" becomes: + +```py + 235 ++ 52 +----- +``` + +Finish the `arithmetic_arranger` function that receives a list of strings which are arithmetic problems, and returns the problems arranged vertically and side-by-side. The function should optionally take a second argument. When the second argument is set to `True`, the answers should be displayed. + +## Example + +Function Call: + +```py +arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"]) +``` + +Output: + +```py + 32 3801 45 123 ++ 698 - 2 + 43 + 49 +----- ------ ---- ----- +``` + +Function Call: + +```py +arithmetic_arranger(["32 + 8", "1 - 3801", "9999 + 9999", "523 - 49"], True) +``` + +Output: + +```py + 32 1 9999 523 ++ 8 - 3801 + 9999 - 49 +---- ------ ------ ----- + 40 -3800 19998 474 +``` + +## Rules + +The function will return the correct conversion if the supplied problems are properly formatted, otherwise, it will **return** a **string** that describes an error that is meaningful to the user. + +- Situations that will return an error: + - If there are **too many problems** supplied to the function. The limit is **five**, anything more will return: `'Error: Too many problems.'` + - The appropriate operators the function will accept are **addition** and **subtraction**. Multiplication and division will return an error. Other operators not mentioned in this bullet point will not need to be tested. The error returned will be: `"Error: Operator must be '+' or '-'."` + - Each number (operand) should only contain digits. Otherwise, the function will return: `'Error: Numbers must only contain digits.'` + - Each operand (aka number on each side of the operator) has a max of four digits in width. Otherwise, the error string returned will be: `'Error: Numbers cannot be more than four digits.'` +- If the user supplied the correct format of problems, the conversion you return will follow these rules: + - There should be a single space between the operator and the longest of the two operands, the operator will be on the same line as the second operand, both operands will be in the same order as provided (the first will be the top one and the second will be the bottom). + - Numbers should be right-aligned. + - There should be four spaces between each problem. + - There should be dashes at the bottom of each problem. The dashes should run along the entire length of each problem individually. (The example above shows what this should look like.) + +# --hints-- + +`arithmetic_arranger(["3801 - 2", "123 + 49"])` should return `3801 123\n- 2 + 49\n------ -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3801 - 2", "123 + 49"]), ' 3801 123\\n- 2 + 49\\n------ -----')`); + } +}) +``` + +`arithmetic_arranger(["1 + 2", "1 - 9380"])` should return `1 1\n+ 2 - 9380\n--- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["1 + 2", "1 - 9380"]), ' 1 1\\n+ 2 - 9380\\n--- ------')`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `3 3801 45 123\n+ 855 - 2 + 43 + 49\n----- ------ ---- -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]), ' 3 3801 45 123\\n+ 855 - 2 + 43 + 49\\n----- ------ ---- -----')`); + } +}) +``` + +`arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"])` should return `11 3801 1 123 1\n+ 4 - 2999 + 2 + 49 - 9380\n---- ------ --- ----- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"]), ' 11 3801 1 123 1\\n+ 4 - 2999 + 2 + 49 - 9380\\n---- ------ --- ----- ------')`); + } +}) +``` + +`arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"])` should return `'Error: Too many problems.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"]), 'Error: Too many problems.')`); + } +}) +``` + +`arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `"Error: Operator must be '+' or '-'."`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Operator must be '+' or '-'.")`); + } +}) +``` + +`arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers cannot be more than four digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers cannot be more than four digits.")`); + } +}) +``` + +`arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers must only contain digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers must only contain digits.")`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "988 + 40"], True)` should return `3 988\n+ 855 + 40\n----- -----\n 858 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "988 + 40"], True), " 3 988\\n+ 855 + 40\\n----- -----\\n 858 1028")`); + } +}) +``` + +`arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True)` should return `32 1 45 123 988\n- 698 - 3801 + 43 + 49 + 40\n----- ------ ---- ----- -----\n -666 -3800 88 172 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True), " 32 1 45 123 988\\n- 698 - 3801 + 43 + 49 + 40\\n----- ------ ---- ----- -----\\n -666 -3800 88 172 1028")`); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def arithmetic_arranger(problems, show_answers=False): + + return problems + +print(f'\n{arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"])}') +``` + +# --solutions-- + +```py +def arithmetic_arranger(problems, result=False): + + lin1 = "" + lin2 = "" + lin3 = "" + lin4 = "" + + if len(problems) > 5: + return 'Error: Too many problems.' + for problem in problems: + [num1, sym, num2] = problem.split() + sign = ['+', '-'] + if sym not in sign: + return ("Error: Operator must be '+' or '-'.") + if len(num1) > 4 or len(num2) > 4: + return ("Error: Numbers cannot be more than four digits.") + if not num1.isnumeric() or not num2.isnumeric(): + return ("Error: Numbers must only contain digits.") + + lin1 += " " + num1 + " " if len(num1) >= len( + num2) else " " * (len(num2) + 2 - len(num1)) + num1 + " " + lin2 += sym + " " + num2 + " " if len(num2) >= len( + num1) else sym + " " * (len(num1) - len(num2) + 1) + num2 + " " + nmax = (len(num1) + 2) if len(num1) >= len(num2) else (len(num2) + 2) + lin3 += "-" * nmax + " " + op = int(num1) + int(num2) if sym == "+" else int(num1) - int(num2) + lin4 += (" " * (nmax - len(str(op)))) + str(op) + " " + + arranged_problems = lin1.rstrip() + "\n" + lin2.rstrip( + ) + "\n" + lin3.rstrip() + if result: + arranged_problems += "\n" + lin4.rstrip() + + return arranged_problems +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md index ed4d025333c..84b10fb783a 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md @@ -23,7 +23,7 @@ Add a new key-value pair to your dictionary. Use the string `species` as the key You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 1 `)) }) @@ -32,7 +32,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have a `species` key with the value `guinea pig` inside your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig"} `)) }) diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md index 4ed1a1b61e2..69edb77063f 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md @@ -14,7 +14,7 @@ Now, replace the existent keys with the strings `A` and `B` — one for each nod Your dictionary should have an `A` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "A" in my_graph `)) }) @@ -23,7 +23,7 @@ Your dictionary should have an `A` key. Your `A` key should have `B` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -32,7 +32,7 @@ Your `A` key should have `B` as the value. Your dictionary should have an `B` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "B" in my_graph `)) }) @@ -41,7 +41,7 @@ Your dictionary should have an `B` key. Your `B` key should have `A` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["B"] == "A" `)) }) @@ -50,7 +50,7 @@ Your `B` key should have `A` as the value. Your dictionary should have two keys. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph) == 2 `)) }) diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md index 30eb86359cf..aad91960c07 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md @@ -16,7 +16,7 @@ Modify your existing dictionary to represent this arrangement. Use a list to rep Your dictionary should have 3 keys — `A`, `B`, and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C"] len(my_graph) == 3 and all(key in my_graph for key in key_list) `)) @@ -26,7 +26,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["A"]` should have the `B` node as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -35,7 +35,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -44,7 +44,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. The value of `my_graph["B"]` should be a list containing the other two nodes. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -53,7 +53,7 @@ The value of `my_graph["B"]` should be a list containing the other two nodes. The value of `my_graph["C"]` should be the connected node. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["C"] == "B" `)) }) diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md index 5f036d03199..5d34b32984c 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md @@ -14,7 +14,7 @@ Add one last node, `D`, which is connected with `A` and `C`. Modify your diction Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -24,7 +24,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list `)) }) @@ -33,7 +33,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["A"]) == 2 and "B" in my_graph["A"] and "D" in my_graph["A"] `)) }) @@ -42,7 +42,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -51,7 +51,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -60,7 +60,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list `)) }) @@ -69,7 +69,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["C"]) == 2 and "B" in my_graph["C"] and "D" in my_graph["C"] `)) }) @@ -78,7 +78,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list `)) }) @@ -87,7 +87,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["D"]) == 2 and "A" in my_graph["D"] and "C" in my_graph["D"] `)) }) diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md index be998bd74fc..41a7c0d4f5a 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md @@ -27,7 +27,7 @@ Modify `my_graph["A"]` into a list of tuples, considering the following distance Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -37,7 +37,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list and all(type(i) is tuple for i in my_graph["A"]) `)) }) @@ -46,7 +46,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 3), ("D", 1)] len(my_graph["A"]) == 2 and all(t in my_graph["A"] for t in tuples) `)) diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md index d8058c5e3bd..a33c4b2f57f 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md @@ -16,7 +16,7 @@ Declare an empty function called `shortest_path` and don't forget the `pass` key You should have a `shortest_path` function. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect inspect.isfunction(shortest_path) `)) diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md index 0c69fad5686..14525c1e89b 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md @@ -16,7 +16,7 @@ For that your function needs two parameters: `graph`, and `start`. Add them to y Your function should accept `graph` and `start` as the parameters, in this order. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == '(graph, start)' diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md index 4bd27a113da..63132e29106 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md @@ -22,7 +22,7 @@ Your function should take three parameters:`graph`, `start`, and `target`. The o The `target` parameter should have the default value of an empty string. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == "(graph, start, target='')" diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md index e4b308791e5..f7f4f834e4d 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md @@ -14,7 +14,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list and all(type(i) is tuple for i in my_graph["B"]) `)) }) @@ -23,7 +23,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 3), ("C", 4)] len(my_graph["B"]) == 2 and all(t in my_graph["B"] for t in tuples) `)) diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md index 705be94ead8..d356c367fb3 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md @@ -14,7 +14,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list and all(type(i) is tuple for i in my_graph["C"]) `)) }) @@ -23,7 +23,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 4), ("D", 7)] len(my_graph["C"]) == 2 and all(t in my_graph["C"] for t in tuples) `)) @@ -33,7 +33,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list and all(type(i) is tuple for i in my_graph["D"]) `)) }) @@ -42,7 +42,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 1), ("C", 7)] len(my_graph["D"]) == 2 and all(t in my_graph["D"] for t in tuples) `)) diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md index a219cc22675..6a59b35a6de 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md @@ -25,7 +25,7 @@ Now, you are going to test your function with another graph. Change `my_graph` i You should modify `my_graph` into the provided graph. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` g = { 'A': [('B', 5), ('C', 3), ('E', 11)], 'B': [('A', 5), ('C', 1), ('F', 2)], diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md index 6632b6afc90..62db4d83c18 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md @@ -27,7 +27,7 @@ You should have a variable called `copper`. Your `copper` variable should have the value of an empty dictionary. Use a pair of curly braces for that. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {} `)) }) diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md index d54773ceaea..0a6d148a90b 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md @@ -16,7 +16,7 @@ Add another key `age` to your dictionary and give it the integer number `2` as v You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 2 `)) }) @@ -25,7 +25,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have an `age` key with the value `2` just after `'species': 'guinea pig'`, inside your `copper` dictionary. Don't forget the comma. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md index 018c73c658d..4edd91c31c6 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md @@ -25,7 +25,7 @@ After your dictionary, follow the example above to access the `species` key of ` You should not modify your dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md index dfa2eda2191..6a900a9bcbd 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md @@ -24,7 +24,7 @@ You should rename your `copper` dictionary into `my_graph`. Your `my_graph` variable should be a dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph) is dict `)) }) diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md index fe315ea6213..c24b1e50ff5 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md @@ -16,7 +16,7 @@ Your `merge_sort` function should take a single parameter: `array`. ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('merge_sort'))) == '(array)' + str(inspect.signature(merge_sort)) == '(array)' `)) }) ``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md index 8bb4030b3db..4a3f46f27b3 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md @@ -19,13 +19,9 @@ You should create an `if` statement to check if `len(array) <= 1`. Don't forget ```js ({ - test: () => { - const transformedCode = code.replace(/\r/g, ""); - const merge_sort = __helpers.python.getDef("\n" + transformedCode, "merge_sort"); - const { function_body } = merge_sort; - - assert.match(function_body, /if\s+len\(\s*array\s*\)\s*<=\s*1:\s*pass/); - } + test: () => assert(runPython(` + _Node(_code).find_function("merge_sort").find_ifs()[0].find_conditions()[0].is_equivalent("len(array) <= 1") + `)) }) ``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md index d05b37ba120..aa561b27617 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md @@ -22,13 +22,11 @@ Use the `pass` keyword in the body of the `if` statement. Your `if` statement should check if `__name__` has a value of `'__main__'` ```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:/); -``` - -You should have the `pass` keyword in the body of your `if` statement - -```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:\s*[^}]*\bpass\b/); +({ + test: () => assert(runPython(` + _Node(_code).find_ifs()[0].find_conditions()[0].is_equivalent("__name__ == '__main__'") + `)) +}) ``` # --seed-- diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md index 5b6dd5fa938..4b9a29ec2e2 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md @@ -25,7 +25,6 @@ Your `rods` variable should be an empty dictionary. ```js ({ test: () => assert(runPython(` - rods = __locals.get("rods") rods == {} `)) }) diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md index d41145c8c00..aa1d7bf2e00 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md @@ -19,8 +19,7 @@ You should use the `range()` function to assign a sequence of numbers to `rods[' ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - type(a['A']) is range + type(rods['A']) is range `)) }) ``` @@ -29,8 +28,7 @@ You should use the `range()` function to assign the sequence of numbers from `3` ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == range(3, 0, -1) + rods['A'] == range(3, 0, -1) `)) }) ``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md index 39828c89e7b..f69c410324b 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md @@ -17,8 +17,7 @@ You should pass your `range()` call to the `list()` function. ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == list(range(3, 0, -1)) + rods['A'] == list(range(3, 0, -1)) `)) }) ``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md index db6440d97e4..b1c96dc5c07 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md @@ -23,7 +23,7 @@ You should declare an empty function named `move`. Remember to use the `pass` ke ({ test: () => { assert(runPython(` import inspect - inspect.isfunction(__locals.get('move')) + inspect.isfunction(move) `)) } }) diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md index 57451f1fbac..85a7523ffbe 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md @@ -23,9 +23,8 @@ The value of `number_of_moves` should be the expression to calculate the number ```js ({ test: () => { - assert(runPython(` - a = __locals.get('NUMBER_OF_DISKS') - __locals.get('number_of_moves') == 2**a -1 + assert(runPython(` + number_of_moves == 2**NUMBER_OF_DISKS -1 `)) } }) ``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md index 9b0e1c89294..02bdfb90e2d 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md @@ -16,7 +16,7 @@ You should declare an empty function named `make_allowed_move`. Remember to use ```js ({ test: () => assert(runPython(` import inspect - inspect.isfunction(__locals.get('make_allowed_move')) + inspect.isfunction(make_allowed_move) `)) }) ``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md index 73066f08a25..e21a47752f7 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md @@ -16,7 +16,7 @@ Your `make_allowed_move()` function should have two parameters named `rod1` and ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('make_allowed_move'))) == '(rod1, rod2)' + str(inspect.signature(make_allowed_move)) == '(rod1, rod2)' `)) }) ``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md index 5dd7a32d19d..44007735657 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md @@ -14,16 +14,14 @@ The `rods` dictionary will represent the three rods with their disks. Give it th Your `rods` dictionary should have an `'A'` key. ```js -({ test: () => assert(runPython(`'A' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'A' in rods`)) }) ``` `rods['A']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['A'] == [] + rods['A'] == [] `)) }) ``` @@ -31,16 +29,14 @@ Your `rods` dictionary should have an `'A'` key. Your `rods` dictionary should have a `'B'` key. ```js -({ test: () => assert(runPython(`'B' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'B' in rods`)) }) ``` `rods['B']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['B'] == [] + rods['B'] == [] `)) }) ``` @@ -48,16 +44,14 @@ Your `rods` dictionary should have a `'B'` key. Your `rods` dictionary should have a `'C'` key. ```js -({ test: () => assert(runPython(`'C' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'C' in rods`)) }) ``` `rods['C']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['C'] == [] + rods['C'] == [] `)) }) ``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md index a28ac44f33f..9ae2af92408 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md @@ -22,7 +22,7 @@ Your `move()` function should have `n`, `source`, `auxiliary`, and `target` as t ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('move'))) == '(n, source, auxiliary, target)' + str(inspect.signature(move)) == '(n, source, auxiliary, target)' `)) }) ``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md index 3aa9c739be1..869a5e1e97a 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md @@ -17,9 +17,8 @@ You should reduce the indentation level of all the code after the `return` state ```js ({ test: () => assert(runPython(` - hanoi = __locals.get("move") a, b, c = [3, 2, 1], [], [] - hanoi(3, a, b, c) + move(3, a, b, c) a == [] and b == [] and c == [3, 2, 1] `)) }) diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md index 16e7b5b68ed..00efcbb8726 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md @@ -23,9 +23,8 @@ You should add `direction` as the third parameter of your function. ```js ({ test: () => assert(runPython(` - import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + import inspect + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction)' `)) }) diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md index 74562ae26a5..d19dc6dbe27 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md @@ -24,8 +24,7 @@ You should declare a new function called `encrypt`. Remember to use the `pass` k ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - inspect.isfunction(f) + inspect.isfunction(encrypt) `)) }) ``` @@ -35,8 +34,7 @@ Your `encrypt` function should take `message` and `key` as the parameters. The o ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - sig = inspect.signature(f) + sig = inspect.signature(encrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md index fa091717efb..b7357c63760 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md @@ -16,8 +16,7 @@ You should define a new function called `decrypt`. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - inspect.isfunction(f) + inspect.isfunction(decrypt) `)) }) ``` @@ -27,8 +26,7 @@ Your `decrypt` function should take `message` and `key` as the parameters. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - sig = inspect.signature(f) + sig = inspect.signature(decrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md index 19fcb7ee6a3..f719d77790e 100644 --- a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md @@ -23,8 +23,7 @@ The `direction` parameter of your `vigenere` function should have a default valu ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction=1)' `)) }) diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md new file mode 100644 index 00000000000..733f024fa29 --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md @@ -0,0 +1,39 @@ +--- +id: 65ef181dad3d96b14a21a03e +title: Step 1 +challengeType: 20 +dashedName: step-1 +--- + +# --description-- + +In this project, you will find the approximate square root of a given number using the bisection method. + +The bisection method is a technique for finding the roots of a real-valued function. It works by narrowing down an interval where the square root lies until it converges to a value within a specified tolerance. + +Begin by creating a function named `square_root_bisection`. Leave the parameters empty for now. + +# --hints-- + +You should define the function `square_root_bisection` with no parameters. + +```js +({ + test: () => { + assert(runPython(` + import inspect + inspect.isfunction(square_root_bisection) + `)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md new file mode 100644 index 00000000000..f5091e5a2c6 --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md @@ -0,0 +1,38 @@ +--- +id: 65ef190c6b51e9b5a5f7ed29 +title: Step 2 +challengeType: 20 +dashedName: step-2 +--- + +# --description-- + +Give the `square_root_bisection` method the following parameters: + +- `square_target`: The number for which you want to find the square root. +- `tolerance` (optional): The acceptable difference between the square of the approximate root value and the actual target value (default is `1e-7`). The tolerance `1e-7` implies that the solution will be accurate to within `0.0000001` of the true value and is a good default choice that balances accuracy and performance. +- `max_iterations` (optional): The maximum number of iterations to perform (default is `100`). If the method doesn't converge within this limit, you'll assume the solution is not found. + +# --hints-- + +Your function should have these parameters: `square_target`, `tolerance = 1e-7`, and `max_iterations = 100`. The order matters. + +```js +({ + test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").has_args("square_target, tolerance=1e-7, max_iterations=100")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py + +--fcc-editable-region-- +def square_root_bisection(): + pass +--fcc-editable-region-- + +``` + diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md new file mode 100644 index 00000000000..77628582774 --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md @@ -0,0 +1,46 @@ +--- +id: 65ef19425d1b27b6c930bae6 +title: Step 3 +challengeType: 20 +dashedName: step-3 +--- + +# --description-- + +If the number for which you want to find the square root is negative, the code should raise an error as the square root of a negative number is not defined in real numbers. + +Remove the `pass` statement and create an `if` statement to check if `square_target` is less than `0`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").has_pass()`)) + } +}) +``` + +You should create an `if` statement to check if `square_target < 0`. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_if("square_target < 0").is_empty()`)) + + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance = 1e-7, max_iterations = 100): + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md new file mode 100644 index 00000000000..20f407dfd2a --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md @@ -0,0 +1,46 @@ +--- +id: 65ef198fde24dfb7ff675b42 +title: Step 4 +challengeType: 20 +dashedName: step-4 +--- + +# --description-- + +If the `square_target` is less than `0`, raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'`. Don't forget to remove the `pass` keyword. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'` inside the `if` body. + +```js +({ + test: () => { + + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].is_equivalent("raise ValueError('Square root of negative number is not defined in real numbers')")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md new file mode 100644 index 00000000000..f31f83a0ed3 --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md @@ -0,0 +1,38 @@ +--- +id: 65ef19ec318e2fb9066381e3 +title: Step 5 +challengeType: 20 +dashedName: step-5 +--- + +# --description-- + +You'll create separate cases for when `square_target` is `0` or `1`. + +Begin by creating an `if` statement to check if `square_target` is equal to `1`. + +# --hints-- + +You should create an `if` statement to check that `square_target == 1`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[0].is_equivalent("square_target == 1")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md new file mode 100644 index 00000000000..927a215705a --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md @@ -0,0 +1,51 @@ +--- +id: 65ef1a1fcb527bba0ca82ccf +title: Step 6 +challengeType: 20 +dashedName: step-6 +--- + +# --description-- + +If the `square_target` is equal to `1`, declare a variable `root` and assign it the value `1` . Also, print the message `'The square root of {square_target} is 1'`. Remember to format the message using an f-string. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should assign the value `1` to the `root` variable and print the message `'The square root of {square_target} is 1'` inside the `if` body. + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].is_equivalent("root = 1\\nprint(f'The square root of {square_target} is 1')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md new file mode 100644 index 00000000000..9ba5f5b573f --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md @@ -0,0 +1,55 @@ +--- +id: 65ef1a50049cf9bada13266f +title: Step 7 +challengeType: 20 +dashedName: step-7 +--- + +# --description-- + +Create an `elif` statement to check if `square_target` is equal to `0`. If it is, assign the value `0` to the `root` variable. Also, print the message `'The square root of {square_target} is 0'`. Remember to format the message using an f-string. + +# --hints-- + +You should have an `elif` statement to check the condition `square_target == 0`. + + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[1].is_equivalent("square_target == 0")`)); + } +}) + +``` + +You should assign the value `0` to the `root` variable and pass the argument `f'The square root of {square_target} is 0'` to a `print` call. + + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[1].is_equivalent("root = 0\\nprint(f'The square root of {square_target} is 0')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md new file mode 100644 index 00000000000..0fb10817783 --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md @@ -0,0 +1,45 @@ +--- +id: 65ef1a720d6e65bbb0d22463 +title: Step 8 +challengeType: 20 +dashedName: step-8 +--- + +# --description-- +Next, you are going to work on the cases where the `square_target` is a positive number apart from `1` or `0`. + +Create an `else` clause to handle these cases. + +# --hints-- + +Create an `else` clause and do not forget to add a `pass` keyword. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[2] == _Node()`)) + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md new file mode 100644 index 00000000000..8f10c9990f1 --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md @@ -0,0 +1,73 @@ +--- +id: 65ef1aacca094bbcc2e2a3c8 +title: Step 9 +challengeType: 20 +dashedName: step-9 +--- + +# --description-- + +In Python, the `max()` function returns the largest of the input values. + +```python +max(1, 2, 3) # Output: 3 +``` + +The variables `low` and `high` will be used to define the initial interval where the square root lies. + +Inside the `else` clause, initialize the `low` variable to `0` and the `high` variable to be the maximum of either `1` or `square_target` as the square root of a number is always less than or equal to the number itself. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].has_pass()`)) + } +}) +``` + +You should declare a variable `low` and assign it `0`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("low").is_equivalent("low = 0")`)); } +}) + +``` + +You should declare a variable `high` and use the `max()` function to assign it the maximum value between `1` and `square_target`. + +```js + +({ test: () => assert(runPython(` +node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("high") +values = ["high = max(1, square_target)", "high = max(square_target, 1)"] +any(node.is_equivalent(val) for val in values) +`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md new file mode 100644 index 00000000000..6711973a758 --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md @@ -0,0 +1,46 @@ +--- +id: 65ef1afca9a8f6be0d4150ba +title: Step 10 +challengeType: 20 +dashedName: step-10 +--- + +# --description-- + +Set the value of `root` to `None` as at this point, you don't have an approximate value yet. + +# --hints-- + +The value of `root` should be `None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].is_equivalent("low = 0\\nhigh = max(1, square_target)\\nroot = None")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + low = 0 + high = max(1, square_target) + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md new file mode 100644 index 00000000000..69406d9fee2 --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md @@ -0,0 +1,51 @@ +--- +id: 65ef1be2b958cabf712296cd +title: Step 11 +challengeType: 20 +dashedName: step-11 +--- + +# --description-- + +Now you'll repeatedly narrow down the interval by finding the midpoint of the current interval and comparing the square of the midpoint with the target value. + +For that, inside the `else` block, create a `for` loop that runs up to `max_iterations` times. + +# --hints-- + +You should create a `for` loop to iterate over `range(max_iterations)`. Use `_` as the loop variable. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].is_equivalent("for _ in range(max_iterations):\\n pass")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md new file mode 100644 index 00000000000..e5efb88bafc --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md @@ -0,0 +1,78 @@ +--- +id: 65ef1c0a03fcabc04ded7e69 +title: Step 12 +challengeType: 20 +dashedName: step-12 +--- + +# --description-- + +Inside the for loop, calculate the midpoint of the interval ranging from `low` to `high`. Assign this value to a variable `mid`. + +Also, calculate the square of the midpoint (`mid`) and store it in the variable `square_mid`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].has_pass()`)) + + } + +}) + +``` + +You should declare a variable `mid` and assign it `(low + high) / 2` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(` + node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("mid") + values = ["mid = (low + high) / 2", "mid = (high + low) / 2"] + any(node.is_equivalent(val) for val in values) + `)) + + } + +}) +``` + +You should declare a variable `square_mid` and assign it `mid**2` inside the body of the for loop. + +```js +({ test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("square_mid").is_equivalent("square_mid = mid**2")`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md new file mode 100644 index 00000000000..f365f00475d --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md @@ -0,0 +1,53 @@ +--- +id: 65ef1c34a541afc12dbb849d +title: Step 13 +challengeType: 20 +dashedName: step-13 +--- + +# --description-- + +The `abs()` function returns the absolute value of a number, which is always positive, regardless of the number sign. You will use it to check that the estimated square root is close enough to the actual value. + +Now, create an `if` statement to check if the absolute value of the difference between `square_mid` and `square_target` is within the specified `tolerance`. + +# --hints-- + +You should have an `if` statement with the condition `abs(square_mid - square_target) < tolerance:` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[0].is_equivalent("abs(square_mid - square_target) < tolerance")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md new file mode 100644 index 00000000000..7c84ec9d7fe --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md @@ -0,0 +1,68 @@ +--- +id: 65ef1cb031de30c2cde64c12 +title: Step 14 +challengeType: 20 +dashedName: step-14 +--- + +# --description-- + +If the difference is within the specified `tolerance`, set the value of `root` to `mid` and break out of the loop. + +# --hints-- + +You should remove the existing `pass` statement. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].has_pass()`)) + } + +}) + +``` + +You should assign the value of `mid` to `root` and break out of the loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].is_equivalent("root = mid\\nbreak")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md new file mode 100644 index 00000000000..18a6767deab --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md @@ -0,0 +1,71 @@ +--- +id: 65ef1cda150a59c3b8306944 +title: Step 15 +challengeType: 20 +dashedName: step-15 +--- + +# --description-- + +If the difference is not within the specified `tolerance`, create an `elif` statement to check if `square_mid` is less than `square_target`. + +Assign the value of `mid` to `low` as the square root would now lie between `low` and `mid`. + +# --hints-- + +You should create an `elif` statement that checks if `square_mid < square_target`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[1].is_equivalent("square_mid < square_target")`)) + + } + +}) +``` + +You should assign the value of `mid` to `low`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[1].is_equivalent("low = mid")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md new file mode 100644 index 00000000000..06598491f2e --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md @@ -0,0 +1,70 @@ +--- +id: 65ef1d104c2be9c4d8e22075 +title: Step 16 +challengeType: 20 +dashedName: step-16 +--- + +# --description-- + +If both the `if` and `elif` conditions are not met, the value of `mid` would be greater than `square_target`. In this case, create an `else` clause and assign the value of `mid` to `high`. + +# --hints-- + +You should have an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[2]== _Node()`)); + } +}) + +``` + +You should assign the value of `mid` to `high` in the `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[2].is_equivalent("high = mid")`)); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- + elif square_mid < square_target: + low = mid + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md new file mode 100644 index 00000000000..45e3e9987a8 --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md @@ -0,0 +1,76 @@ +--- +id: 65ef1d5e3d2927c5e0f4997b +title: Step 17 +challengeType: 20 +dashedName: step-17 +--- + +# --description-- + +Outside the for loop, create an `if` statement to check if the value of `root` is still `None`. If it is, print the message `'Failed to converge within {max_iterations} iterations.'`. Remember to format the message using an f-string. + +# --hints-- + +You should create an `if` statement that checks if `root is None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[0].is_equivalent("root is None")`)); + + } +}) +``` + +You should pass the argument `f'Failed to converge within {max_iterations} iterations.'` to the `print` function. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].is_equivalent("if root is None:\\n print(f'Failed to converge within {max_iterations} iterations.')")`)); + + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md new file mode 100644 index 00000000000..ffe75554dd8 --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md @@ -0,0 +1,77 @@ +--- +id: 65ef1d924ff2e5c7031c6ce8 +title: Step 18 +challengeType: 20 +dashedName: step-18 +--- + +# --description-- + +Create an `else` clause to handle the case where the value of `root` is not `None`, indicating that a root hass been found. If it is not `None`, print the message `'The square root of {square_target} is approximately {root}'`. Remember to format using an f-string. + +# --hints-- + +You should create an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[1] == _Node()`)); + } +}) + +``` + +You should print `f'The square root of {square_target} is approximately {root}'` within the `else` body. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_bodies()[1].is_equivalent("print(f'The square root of {square_target} is approximately {root}')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md new file mode 100644 index 00000000000..1a2bb01cf56 --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md @@ -0,0 +1,68 @@ +--- +id: 65ef1dd722f6e7c8294eeec4 +title: Step 19 +challengeType: 20 +dashedName: step-19 +--- + +# --description-- + +Finally, return the value of `root` from the `square_root_bisection` function. + +# --hints-- + +You should return `root` at the end of the function. + +```js +({ + test: () => + { + const pyClassStr = runPython(`str(_Node(_code).find_function("square_root_bisection"))`); + assert.match(pyClassStr, /return\s*root/) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md new file mode 100644 index 00000000000..7904b9bceab --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md @@ -0,0 +1,70 @@ +--- +id: 65ef1e10268f8ec9121446d1 +title: Step 20 +challengeType: 20 +dashedName: step-20 +--- + +# --description-- + +Outside the function definiton, create a variable `N` and assign the value of `16` to it. + +# --hints-- + +You should have the variable `N = 16` outside the function definition. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_variable("N").is_equivalent("N = 16")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md new file mode 100644 index 00000000000..71da1b62c03 --- /dev/null +++ b/curriculum/challenges/italian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md @@ -0,0 +1,115 @@ +--- +id: 65ef1eac497754cafa12a26c +title: Step 21 +challengeType: 20 +dashedName: step-21 +--- + +# --description-- + +Call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +Experiment with larger values. + +With this, you have successfully implemented the bisection method to find the square root of a number. + +# --hints-- + +You should call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +```js +({ + test: () => assert(runPython(`_Node(_code).has_call("square_root_bisection(N)")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- +N = 16 + +--fcc-editable-region-- + +``` + +# --solutions-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +N = 16 +square_root_bisection(N) +``` diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md index e5de5efb236..a89f73d355c 100644 --- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md +++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md @@ -7,7 +7,7 @@ dashedName: step-8 # --description-- -Per vedere l'elemento `cat-head`, imposta un gradiente lineare come sfondo con `#5e5e5e` all'`85%` e `#45454f` al `100%`. +To see the `.cat-head` element, give it a linear gradient background with `#5e5e5e` at `85%` and `#45454f` at `100%`. Potresti non notare la differenza tra i due colori, ma sono lì. diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md index fc2357f825e..2d38229e720 100644 --- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md +++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md @@ -11,7 +11,7 @@ All'interno dell'elemento `.cat-ears`, crea due elementi `div` con le classi `ca # --hints-- -You should not change the existing `div` element with the class `car-ears`. +You should not change the existing `div` element with the class `cat-ears`. ```js assert(document.querySelectorAll('div.cat-ears').length === 1); diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md index 2f54e542b8b..ffc2e9b071e 100644 --- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md +++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md @@ -11,7 +11,7 @@ L'ultimo valore della proprietà position è `sticky`. Il posizionamento `sticky Cambia il valore della proprietà `position` di `.cat-head` in `sticky`, imposta `top` su `0`, poi rimuovi `left` e il suo valore. -**Nota**: per vedere come funziona `sticky`, devi inserire del testo prima e dopo l'elemento `div` `.cat-head`. Dopo di che se scorri in alto, vedrai che `.cat-head` si blocca in cima e rimane lì. +**Nota**: per vedere come funziona `sticky`, devi inserire del testo prima e dopo l'elemento `div` `.cat-head`. If you scroll down after that, you'll see that the `.cat-head` gets stuck to the top and remains there. # --hints-- diff --git a/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md b/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md index 0f93285cb97..5f212983dbc 100644 --- a/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md +++ b/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md @@ -61,7 +61,7 @@ while (continueLoop) { --fcc-editable-region-- --fcc-editable-region-- -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md b/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md index bf40abef119..3f935935d65 100644 --- a/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md +++ b/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md @@ -44,7 +44,7 @@ let done = 0; while (continueLoop) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md b/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md index 9c976287a58..38f1716a030 100644 --- a/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md +++ b/curriculum/challenges/italian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md @@ -48,7 +48,7 @@ let done = 0; while (done !== count) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/italian/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md b/curriculum/challenges/italian/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md index 020d23938c1..c9530607b95 100644 --- a/curriculum/challenges/italian/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md +++ b/curriculum/challenges/italian/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md @@ -23,15 +23,7 @@ Test value of `__name__` ```js ({ - test: () => assert(__pyodide.runPython(`__name__ == '__main__'`)) -}) -``` - -Test __locals and __pyodide - -```js -({ - test: () => assert(__pyodide.runPython(`__locals.get('add')(4,5) == 9`)) + test: () => assert(runPython(`__name__ == '__main__'`)) }) ``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md index d2139487de3..de4fa3e7ee3 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md @@ -1,6 +1,5 @@ --- id: 658111239f39a01c8f095c44 -videoId: nLDychdBwUg title: "Dialogue 1: What Motivates the Team?" challengeType: 21 dashedName: dialogue-1-what-motivates-the-team @@ -13,3 +12,275 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Maria", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.5, + "dialogue": { + "text": "Hey Maria, I have a question… Do you know what motivates the team?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 4.9, + "finishTime": 7.4, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 8.7, + "finishTime": 12.3, + "dialogue": { + "text": "Hi Brian! Well, one thing that really motivates me is learning new things.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 12.7, + "finishTime": 16, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 16.5, + "finishTime": 18.2, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 19.7, + "finishTime": 20.9, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 21.3, + "finishTime": 24.7, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 25, + "finishTime": 27.2, + "dialogue": { + "text": "But you know what demotivates me sometimes?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 27.7, + "finishTime": 32.6, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 33.1, + "finishTime": 37.3, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 37.7, + "finishTime": 39.7, + "dialogue": { + "text": "Well, collaborating with our creative team", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 39.7, + "finishTime": 42.5, + "dialogue": { + "text": "and brainstorming many ideas really inspires me.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 42.8, + "finishTime": 44.6, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 45.5, + "finishTime": 49, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 49.3, + "finishTime": 53.6, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 54, + "finishTime": 55.5, + "dialogue": { + "text": "It is really frustrating.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 56.5, + "finishTime": 58.4, + "dialogue": { + "text": "Yeah, technical glitches are complicated", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 58.4, + "finishTime": 61, + "dialogue": { + "text": "and there's not much we can do other than try to solve them.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 62, + "finishTime": 63.3, + "dialogue": { + "text": "But do you know what else is great?", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 63.7, + "finishTime": 66.7, + "dialogue": { + "text": "Seeing the team's enthusiasm after solving these issues.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 67.1, + "finishTime": 69.8, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 71.3, + "finishTime": 75.4, + "dialogue": { + "text": "Yeah. Wow. You know what? This was really a motivating talk.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 75.7, + "finishTime": 77.1, + "dialogue": { + "text": "Thanks for sharing your thoughts.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 77.7, + "finishTime": 79.8, + "dialogue": { + "text": "Anytime. It's good to have these discussions.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 80, + "finishTime": 81.6, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "right" + } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 82.1 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 82.6 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md index 5eb9cbab87f..bd40d89ce39 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-6 --- - + # --description-- @@ -18,7 +15,7 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ## --sentence-- -`Well, one thing that really motivates me is _ new things.` +`Hi, Brian. Well, one thing that really motivates me is _ new things.` ## --blanks-- @@ -27,3 +24,47 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ### --feedback-- This word is a gerund, the `-ing` form of the verb used as a noun, indicating the action or process of gaining knowledge. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md index 57d5a2b1a4d..279e2861a88 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-5 --- - + # --description-- @@ -20,7 +17,7 @@ When you add an `s` at the end of a word, like `things`, it means you are talkin ## --sentence-- -`Hi Brian! _, one _ that really motivates me _ learning new _.` +`Hi, Brian! _, one _ that really motivates me _ learning new _.` ## --blanks-- @@ -53,3 +50,47 @@ This is the verb `to be` conjugated in the third person singular. ### --feedback-- Maria uses this word to talk about more than one item or idea she likes to learn. It is the plural form of `thing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md index eee61930dcc..3ecb0ccb702 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-7 --- - + # --description-- @@ -51,3 +48,47 @@ learning new things ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md index 053ae896f0b..80d98bbbc33 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-8 --- - + # --description-- @@ -37,3 +34,47 @@ This word is a gerund describing the activity Maria enjoys related to discoverin ### --feedback-- Another gerund that follows `and`, indicating another activity Maria enjoys, which is about getting better at something. It also ends in `-ing` and serves as a noun. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 15.04 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.28, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.78 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md index fbe4dcc505d..cfa8469782b 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-10 --- - + # --description-- @@ -26,7 +23,7 @@ In `I love exploring many new technologies`, how is `exploring` used? ## --answers-- -As a present continuous +As a verb in the present continuous structure ### --feedback-- @@ -34,7 +31,7 @@ Present continuous are for actions happening now. This is not showing an action --- -As a simple present verb +As a verb in the simple present structure ### --feedback-- @@ -42,11 +39,11 @@ Simple present verbs don't end in `-ing`. --- -As a gerund +As a verb in the gerund form --- -As a past participle +As a verb in the past participle form ### --feedback-- @@ -55,3 +52,47 @@ Past participles are for perfect tenses or as adjectives. This is not used like ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 6.50, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills. It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 7.00 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md index 80690caccd2..252cf48c05b 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-18 --- - + # --description-- @@ -31,3 +28,47 @@ Adding a prefix to a word can change its meaning. ### --feedback-- Maria uses an adjective ending in `-ing` to describe a feeling that is the opposite of `motivating`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 32.22, + "finishTimestamp": 36.08 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.86, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.36 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md index 9001228085f..2ea50eff48d 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-11 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to the audio and complete the sentence. ### --feedback-- This word is used when someone listens to what another person says. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 19.86 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 2.68 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md index f00bebea879..042955730aa 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-12 --- - + # --description-- @@ -49,3 +46,47 @@ This word means to develop or become bigger or more advanced. It ends with `-ing ### --feedback-- This word is related to work or a career. It describes doing something in a way that shows good skills and behavior at a job. it ends with `-ly` + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 20.28, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md index 885332a3dfc..008035b84e7 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-13 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on how skill improvement fits into overall personal and professional dev ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.98, + "dialogue": { + "text": "That's great to hear, Maria. Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.48 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md index a99fd602832..e087041f3d9 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-14 --- - + # --description-- @@ -53,3 +50,65 @@ He's adding to the conversation, not changing the topic. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 26.26 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 2.60, + "finishTime": 5.64, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot,", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 6.02, + "finishTime": 8.58, + "dialogue": { + "text": "but you know what demotivates me sometimes?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 9.08 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md index 0bcef38811f..ed340f1a31c 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md @@ -28,4 +28,48 @@ Listen to the audio and complete the sentence. ### --feedback-- -This word means feeling very happy and eager. +This word means feeling very happy and eager. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 15.32, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.94, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.44 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md index b425e084763..cf6dcc31710 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-16 --- - + # --description-- @@ -55,3 +52,47 @@ This phrase means having plenty of time, which is different from what Brian mean ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md index b5708ac00fe..8de15f47d1c 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-17 --- - + # --description-- @@ -47,3 +44,47 @@ This word is a preposition used to compare or illustrate a similarity to somethi ### --feedback-- It means you are doing something quickly because you do not have much time. It ends with `-ing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md index 5293029060e..f74bac67a8c 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-20 --- + + # --description-- The word `brainstorming` refers to a group discussion to produce ideas and solve problems. @@ -46,3 +48,47 @@ It means adhering to specific instructions, which is not the same as the word. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md index ea82aef1538..1b4aea4a2b1 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-28 --- - + # --description-- @@ -18,7 +15,7 @@ The phrase `slow down` means to decrease in speed or reduce the rate of progress ## --sentence-- -`The problem is encountering many technical issues that make our progress _ _.` +`The problem is encountering many technical issues that _ our progress _.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to describe a decrease in speed or pace. ### --feedback-- This adverb complements the phrase to indicate a reduction or decrease in intensity, speed, or amount. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md index ed1c423927b..bd8c7fa6444 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-32 --- + + # --description-- The phrase `other than` indicates the presence of an alternative or different option. @@ -46,3 +48,47 @@ It means the singular or exclusive option, which is not the same as the phrase. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md index d2a4201ca63..9712d6a3279 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-35 --- - + # --description-- @@ -43,3 +40,47 @@ This possessive adjective is used to refer to something that belongs to the pers ### --feedback-- This noun refers to the reason or reasons one has for acting or behaving in a particular way. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 66.12, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 3.68, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.18 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md index 8f432d36f95..c5b54c0b913 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-38 --- - + # --description-- @@ -29,3 +26,47 @@ In the dialogue, Maria talks about the importance of discussions to help them re ### --feedback-- This verb is used to make someone think of something they might have forgotten. It brings something back into someone's mind. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 76.52, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.08, + "dialogue": { + "text": "Anytime. It's good to have these discussions. It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.58 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md index ba9e43efcb6..974459e9326 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-39 --- - + # --description-- @@ -43,3 +40,47 @@ This pronoun refers to the speaker and at least one other person, indicating a c ### --feedback-- This word is used in the context of continuing forward or persevering in a particular action or state. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 79.06, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.54, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.04 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md index 2f8c34f4dbf..c1b55b444af 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md @@ -1,6 +1,5 @@ --- id: 658160772584ba319849f910 -videoId: nLDychdBwUg title: "Dialogue 2: Asking How Someone Feels" challengeType: 21 dashedName: dialogue-2-asking-how-someone-feels @@ -13,3 +12,239 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Alice", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Tom", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Alice", + "startTime": 2, + "finishTime": 5.6, + "dialogue": { + "text": "Hi Tom, you look a bit down these days. Is everything okay?", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 6.3, + "finishTime": 9.5, + "dialogue": { + "text": "Hey Alice, yeah, I feel a bit demotivated.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 9.8, + "finishTime": 13.6, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 13.8, + "finishTime": 16.7, + "dialogue": { + "text": "It's exhausting, and it feels like I'm constantly running", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 16.7, + "finishTime": 18.1, + "dialogue": { + "text": "without knowing where I'm going.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 18.9, + "finishTime": 22.7, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 23.4, + "finishTime": 25.7, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 26.2, + "finishTime": 28.8, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 28.8, + "finishTime": 30.6, + "dialogue": { + "text": "instead of working together as a team.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 31.3, + "finishTime": 34.7, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 35, + "finishTime": 38.4, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 38.9, + "finishTime": 41.7, + "dialogue": { + "text": "Sometimes, it feels like we're meeting for no reason,", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 41.7, + "finishTime": 44.3, + "dialogue": { + "text": "and it's hard to find time to actually work on projects.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 45, + "finishTime": 48.4, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 49, + "finishTime": 52.6, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 52.6, + "finishTime": 56.6, + "dialogue": { + "text": "without any variation. It feels like I'm wasting my skills and creativity.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 57.06, + "finishTime": 59, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 59.6, + "finishTime": 62.8, + "dialogue": { + "text": "Repeating the same tasks over and over can be demotivating.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 63.2, + "finishTime": 66.4, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 66.8, + "finishTime": 69.4, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation,", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 69.4, + "finishTime": 71.3, + "dialogue": { + "text": "and it's good to share and support each other.", + "align": "left" + } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 71.8 + }, + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 72.3 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md index b8674840c93..9a3003405af 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-40 --- - + # --description-- @@ -22,7 +19,7 @@ In this conversation, Alice notices something about Tom's mood and asks if he's ## --sentence-- -`Hi Tom, you look a bit _ _ days. Is everything okay?` +`Hi, Tom. You look a bit _ _ days. Is everything okay?` ## --blanks-- @@ -39,3 +36,47 @@ This word is used to describe feeling sad or unhappy. It's like when you're not ### --feedback-- This word is used with `days` to talk about the current time or the recent period. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 0.98, + "finishTimestamp": 4.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.60, + "dialogue": { + "text": "Hi, Tom. You look a bit down these days. Is everything okay?", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.10 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md index 8fe09a43d89..fdd78d7f84d 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-41 --- - + # --description-- @@ -20,7 +17,7 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ## --sentence-- -`Hey Alice, yeah, I feel a bit _.` +`Hey, Alice. Yeah, I feel a bit _.` ## --blanks-- @@ -29,3 +26,47 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ### --feedback-- This word is used to describe how Tom feels. It ends with `ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 8.48 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md index a8f6062add9..e30ea2d793a 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-42 --- - + # --description-- @@ -46,8 +43,52 @@ This word means `lacking` or `not having` something. --- -`break` +`breaks` ### --feedback-- -This word refers to a short period of rest or pause from work or activity. +This word refers to a short period of rest or pause from work or activity. Use the plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 8.84, + "finishTimestamp": 12.60 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.76, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.26 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md index 90185d888a6..b19719a1211 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-43 --- - + # --description-- @@ -45,3 +42,47 @@ This word means something is happening all the time or very often. ### --feedback-- This word is used to indicate the absence of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 12.82, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 5.30, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.80 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md index b6f27b9c9b9..524c4be5635 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-44 --- - + # --description-- @@ -18,7 +15,7 @@ Tom talks about what's making him feel demotivated. Let's figure out what is bot ## --text-- -What is making Tom feel demotivated and why? +What is making Tom feel demotivated? ## --answers-- @@ -51,3 +48,65 @@ Reflect on Tom's words about his work routine and how it makes him feel. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.54, + "finishTime": 8.3, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 8.52, + "finishTime": 12.82, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 13.32 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md index 23f853581be..b084d8c5f2d 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-45 --- - + # --description-- @@ -51,3 +48,47 @@ She understands how Tom feels ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 18.98 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 2.28, + "dialogue": { + "text": "I totally get that, Tom.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 2.78 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md index 95b626db8ab..18b3ede5a71 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-46 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working more hours than what is normally required, often beyond ### --feedback-- This word describes something that makes you feel very tired, like it's taking all your energy away. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 21.72 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.02, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.52 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md index 8e581dc301d..143b260cab0 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-47 --- - + # --description-- @@ -35,3 +32,47 @@ This word means managing or handling, especially when the situation is challengi ### --feedback-- This word, in the context of the office, refers to the social and power dynamics among coworkers and within the workplace environment. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 24.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.52, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.02 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md index ffd2e2364d2..5c132f9bd9c 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-48 --- - + # --description-- @@ -45,3 +42,47 @@ This word means making an effort to do something, often something challenging. ### --feedback-- This word is about doing tasks, especially with others to achieve a common goal or finish a project. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 25.02, + "finishTimestamp": 29.38 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.36, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.86 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md index eed7315d9fd..1c59d0c36f8 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-49 --- - + # --description-- @@ -51,3 +48,65 @@ Reflect on the specific aspect of work that Alice mentions she hates dealing wit ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 29.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.9, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 5.64, + "finishTime": 7.96, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 8.4, + "finishTime": 12.88, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 13.38 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md index 008029728ad..89639635494 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-50 --- - + # --description-- @@ -22,11 +19,11 @@ Tom is agreeing with Alice about a specific aspect of work that they find unplea ## --blanks-- -`dealing` +`Dealing` ### --feedback-- -This word means managing or handling something, often implying that it's not an easy or enjoyable task. +This word means managing or handling something, often implying that it's not an easy or enjoyable task. Don't forget the capitalization. --- @@ -35,3 +32,47 @@ This word means managing or handling something, often implying that it's not an ### --feedback-- In the context of an office, this word refers to the social and power dynamics among coworkers. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 30.08, + "finishTimestamp": 33.46 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md index 33c828a005d..eb1ae62b875 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-51 --- - + # --description-- @@ -45,3 +42,47 @@ This word is part of a expression that means something is making Tom upset or an ### --feedback-- This word is used when you're talking about experiencing something, like when you have a lot of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md index f182b582c7f..9e516b17b69 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-52 --- - + # --description-- @@ -51,3 +48,47 @@ He wishes for even more meetings ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md index 43b8ae258c9..f457d5cb4c2 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-53 --- - + # --description-- -Listen to the audio and answer the question. +Listen to the audio and fill in the blanks. # --fillInTheBlank-- @@ -51,3 +48,47 @@ This word means to discover or locate something. It's often used when you're loo ### --feedback-- This word is used to emphasize what is really true or happening. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md index e12e17d47ff..a0c2ef0d79a 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-54 --- - + # --description-- @@ -51,3 +48,47 @@ They take away time from working on projects ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md index 2bd6b036fb7..97dde90f3cb 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-55 --- - + # --description-- @@ -24,7 +21,7 @@ Alice: I hear you, Tom. Sitting in meetings for hours can be discouraging. ## --sentence-- -`_ in meetings for hours can be _.` +`I hear you, Tom. _ in meetings for hours can be _.` ## --blanks-- @@ -41,3 +38,47 @@ This word describes the action of being seated. It is capitalized. ### --feedback-- This word means something that makes you feel less confident or willing to continue. It ends in `ing`, showing it's describing the effect of the action. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md index da3c221a1f1..30aeb3ff460 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md @@ -5,12 +5,7 @@ challengeType: 19 dashedName: task-56 --- - + # --description-- @@ -53,3 +48,47 @@ Consider what Alice means by `discouraging` in the context of meetings. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md index c60324ba8d3..2957a5033ab 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-57 --- - + # --description-- @@ -43,3 +40,47 @@ This word is used to describe a large number of things grouped together. It's li ### --feedback-- This word refers to having different types or changes in something. It's the opposite of doing the same thing over and over. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 52.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 6.02, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.52 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md index 63d0a5a5643..cf49c33b69a 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-58 --- - + # --description-- @@ -35,3 +32,47 @@ This word means not using something valuable in a good or effective way. It's li ### --feedback-- This word refers to the ability to make new things or think of new ideas. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 53.24, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.34, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 3.84 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md index 540a3a77c0f..e189fc50af5 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-59 --- - + # --description-- @@ -51,3 +48,56 @@ Consider what Alice says directly annoys her versus how she feels about another ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md index ef09e4af19b..a5f87b483bd 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-60 --- - + # --description-- @@ -51,3 +48,56 @@ Think about whether meetings are mentioned in the context of wasting skills and ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md index fa7b1328561..7f182561d7f 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-61 --- - + # --description-- @@ -39,3 +36,47 @@ This auxiliary verb is used here to emphasize the verb that follows it, making t ### --feedback-- This adjective describes feelings of annoyance or irritation, often because of obstacles or difficulties. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 58.00 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.14, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 3.64 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md index e2e6ee3f118..d0f7a57efaa 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-62 --- - + # --description-- @@ -55,3 +52,47 @@ This word, when used twice with `and` in between, emphasizes the repetition of a ### --feedback-- This word describes something that reduces your desire or willingness to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 61.78 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "That does sound frustrating, Alice. Repeating the same tasks over and over can be demotivating.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md index 27d721f5a0a..bef09034af7 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-63 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to describe an emotional experience or sensation, in this case ### --feedback-- This word is the plural of `this`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md index 1721b02d9e4..c2eefbb7b7d 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-65 --- - + # --description-- @@ -51,3 +48,47 @@ For listening to him ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md index 80ad6cb9859..dc1a51e3b48 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-66 --- - + # --description-- @@ -51,3 +48,47 @@ This word means to tell others about your own experiences, thoughts, or feelings ### --feedback-- This word involves giving help or encouragement, showing you are there for someone. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md index 88359a9631c..ae0f2da0a0d 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-67 --- - + # --description-- @@ -51,3 +48,47 @@ The value of sharing feelings and supporting one another ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md index 01535bb27f7..e34ef923278 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-64 --- - + # --description-- @@ -44,3 +41,46 @@ This word is the middle part of the phrase used to casually introduce new inform This word completes the phrase, indicating a casual addition or shift in the conversation. +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md index abd512abbb8..fb7e5ccda2d 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md @@ -1,6 +1,5 @@ --- id: 65a351bd69b0b72d7ed24eb5 -videoId: nLDychdBwUg title: "Dialogue 3: Talking About Motivations to Pursue a Career" challengeType: 21 dashedName: dialogue-3-talking-about-motivations-to-pursue-a-career @@ -13,3 +12,212 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Lisa", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5, + "dialogue": { + "text": "Hey Lisa, what motivated you to choose a career in tech?", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 6, + "finishTime": 8.5, + "dialogue": { + "text": "One of my main motivations was the financial stability", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 8.8, + "finishTime": 10, + "dialogue": { + "text": "that tech jobs can provide.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 10.4, + "finishTime": 12.8, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 13.3, + "finishTime": 16.3, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 17.4, + "finishTime": 19.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 19.8, + "finishTime": 24, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 24, + "finishTime": 26, + "dialogue": { + "text": "and have different perspectives.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 26.8, + "finishTime": 29.2, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 29.2, + "finishTime": 32.1, + "dialogue": { + "text": "Another thing was the chance to be part of projects", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 32.1, + "finishTime": 34.2, + "dialogue": { + "text": "that push the limits of innovation and creativity.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 34.9, + "finishTime": 36, + "dialogue": { + "text": "I'm with you on that one.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 36.1, + "finishTime": 39.6, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 39.7, + "finishTime": 43.1, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 44.3, + "finishTime": 47.3, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 47.3, + "finishTime": 49.6, + "dialogue": { + "text": "and finding practical solutions is really thrilling.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 50.3, + "finishTime": 53, + "dialogue": { + "text": "Knowing that we solved problems is really exciting, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 53.4, + "finishTime": 56.7, + "dialogue": { + "text": "I hope we keep getting as much motivation from it as we can.", + "align": "left" + } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.2 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.7 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md index e165f760c08..23c160c642f 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-68 --- - + # --description-- @@ -18,7 +15,7 @@ Brian: Hey Lisa, what motivated you to choose a career in tech? ## --sentence-- -`Hey Lisa, what _ you to _ a career in tech?` +`Hey, Lisa, what _ you to _ a career in tech?` ## --blanks-- @@ -34,4 +31,48 @@ This word means something gave you a reason or desire to do something. It ends w ### --feedback-- -This verb is about making a decision between different options. +This verb is about making a decision between different options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md index 94e4ccd2b3e..3a96b95c93a 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-69 --- - + # --description-- @@ -51,3 +48,47 @@ What motivated her to pick a tech career ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md index 47d7700e414..9dc5f7bc32d 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-70 --- - + # --description-- @@ -37,3 +34,47 @@ The most important. ### --feedback-- Being steady, meaning you don't have to worry too much about it. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md index afed572b3be..22a27d6cb43 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-71 --- - + # --description-- @@ -35,3 +32,47 @@ This word is a past tense verb used to describe a state or condition in the past ### --feedback-- This verb means to give or supply something needed, like help, information, or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md index a5031402575..f006bbf44d1 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-72 --- - + # --description-- @@ -52,3 +48,71 @@ Reflect on Lisa's statement and whether travel is mentioned as a motivation. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.50 + }, + { + "character": "Lisa", + "opacity": 1, + "startTime": 5.50 + }, + { + "character": "Lisa", + "startTime": 5.82, + "finishTime": 10.02, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md index e71f55301a3..4b20a9bd448 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-73 --- - + # --description-- @@ -37,3 +34,47 @@ This verb means giving permission or making it possible to do something. this ve ### --feedback-- This noun describes the feeling of being certain about your abilities or something you're going to do. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 9.48, + "finishTimestamp": 11.90 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.42, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 3.92 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md index 4f8c68dfebb..ca8b0a42958 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-74 --- - + # --description-- @@ -39,3 +36,47 @@ This word refers to different areas of work or study. It's plural here because s ### --feedback-- This verb is used to talk about successfully reaching a goal, especially after putting in effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 12.16, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md index d0951b06bde..84aca093d52 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-75 --- - + # --description-- @@ -51,3 +48,65 @@ Lisa doesn't mention working less. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md index 1e5b8911585..9bd217faa04 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-76 --- - + # --description-- The words `much` and `many` are used to talk about quantity. @@ -52,3 +49,65 @@ Reflect on Lisa's statement about what makes tech jobs stand out for her. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md index 38a5ed3758e..013e56a7705 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-77 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to Brian's response to Lisa and fill in the missing word that shows he st ### --feedback-- This adverb is used to emphasize the truth or importance of a statement, showing strong agreement or belief. it ends with `ly`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 18.38 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.40, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.90 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md index 620135fd503..145afc143d8 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-78 --- - + # --description-- @@ -51,3 +48,47 @@ This word is used to describe different areas of study or work. This word is in ### --feedback-- These are different ways of viewing or thinking about something. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 18.80, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.20, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.70 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md index 5f88ce8ca38..56d23563f4a 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-79 --- - + # --description-- @@ -51,3 +48,56 @@ Consider Brian's interest in working across many fields versus concentrating on ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 3.82, + "finishTime": 10.02, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md index 9867dd455d5..36fa55aa8ae 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-80 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working together with others. Notice it ends with `-ing`, indica ### --feedback-- This adjective describes something that is thrilling or full of energy. It ends with `-ing`, showing a quality or state. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.62, + "finishTimestamp": 28.18 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md index 31ed219cb44..d126871e672 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-81 --- - + # --description-- @@ -45,3 +42,47 @@ TTo extend or go beyond usual limits or boundaries. It's often used to talk abou ### --feedback-- This noun refers to new ideas, products, or methods that improve something or solve problems. It's about coming up with new ways to do things. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 28.38, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md index 976777de56e..19ed243bc7e 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-82 --- - + # --description-- @@ -51,3 +48,56 @@ Consider whether Lisa's motivation is related to work environment or the nature ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.94 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md index cc4a931a4a1..9d83cc465d3 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-83 --- - + # --description-- @@ -52,3 +48,80 @@ He agrees with Lisa ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 34.98 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.45 + }, + { + "character": "Brian", + "opacity": 1, + "startTime": 8.45 + }, + { + "character": "Brian", + "startTime": 8.57, + "finishTime": 10.16, + "dialogue": { + "text": "I'm with you on that one.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.66 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md index 3c748ab456e..c9ec667c225 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-84 --- - + # --description-- @@ -37,3 +34,47 @@ This noun describes the ability to change or adapt easily according to different ### --feedback-- This word refers to the specific functions or positions that individuals can have within a group or organization. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 38.36 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.76 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md index f111304b929..566d8c5e7db 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-85 --- - + # --description-- @@ -20,7 +17,7 @@ Listen carefully and fill in the missing words about what tech roles make possib ## --sentence-- -`They _ us to balance our jobs with personal _ and hobbies.` +`I'm also interested in the flexibility that tech roles offer. They _ us to balance our jobs with personal _ and hobbies.` ## --blanks-- @@ -37,3 +34,56 @@ This verb means to make something possible or to give permission for something. ### --feedback-- This noun refers to things you enjoy doing, like hobbies or activities that catch your attention. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md index 0efe7ddf734..f5aab15821c 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-86 --- - + # --description-- @@ -55,3 +52,56 @@ Is Brian talking about traveling, or is he interested in something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md index 1828c2b24fd..f285c7e7f50 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-87 --- - + # --description-- @@ -45,3 +42,47 @@ This word means discovering or coming up with something, like an answer or solut ### --feedback-- This adjective means very exciting. It often describes something that makes your heart beat faster because it's so exciting or fun. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md index a2b77cc1c45..689b3e667de 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-88 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on the word `satisfaction` and if it suggests feeling tired. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md index 122529e8f39..fd8178da8fc 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-89 --- - + # --description-- @@ -43,3 +40,47 @@ This adjective describes something that is thrilling or causes great enthusiasm. ### --feedback-- This word means receiving or obtaining something. Here, it's also in the `-ing` form, indicating an ongoing action or process. Remember to use double `t`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md index f8bb1a273ee..a72f4990d84 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-90 --- - + # --description-- @@ -53,3 +50,47 @@ Brian talks about being excited by solving problems, not about where to find mot ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md index 93a91f9790d..f0a8796d57b 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md @@ -13,3 +13,221 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Bob", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sarah", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.6, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech?", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 5, + "finishTime": 7, + "dialogue": { + "text": "It's all those amazing gadgets!", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 7.8, + "finishTime": 9.6, + "dialogue": { + "text": "I can see your enthusiasm, Bob!", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 9.9, + "finishTime": 12.3, + "dialogue": { + "text": "Tell me, which tech gadgets are your absolute favorites?", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 13, + "finishTime": 16.2, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 16.3, + "finishTime": 18.9, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health,", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 19.2, + "finishTime": 22.7, + "dialogue": { + "text": "and even helps me stay organized with reminders and notifications.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 23.7, + "finishTime": 26, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 26, + "finishTime": 28.1, + "dialogue": { + "text": "The camera quality, the speed,", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 28.3, + "finishTime": 30.8, + "dialogue": { + "text": "and the number of apps available are what I like the most.", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 31.2, + "finishTime": 33.9, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 34.3, + "finishTime": 37.2, + "dialogue": { + "text": "Gadgets like these are transforming our daily lives.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 37.6, + "finishTime": 40.8, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 41.3, + "finishTime": 44, + "dialogue": { + "text": "I love capturing stunning aerial shots", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 44, + "finishTime": 46.5, + "dialogue": { + "text": "and exploring new angles for photography.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 47.7, + "finishTime": 50.3, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 50.7, + "finishTime": 52.7, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 52.7, + "finishTime": 54.5, + "dialogue": { + "text": "It's amazing how these innovations", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 54.5, + "finishTime": 56.8, + "dialogue": { + "text": "keep making our lives more interesting and connected.", + "align": "right" + } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.3 + }, + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.8 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md index 2f5b51c5efe..1c735765ddb 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-91 --- - + # --description-- @@ -47,3 +44,47 @@ This word is used to point out specific things that are being talked about, in t ### --feedback-- This word refers to small electronic devices or tools that are useful or interesting. It's often used to talk about cool tech items. It is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md index 06bb47f4e2f..7ddc748e75b 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-92 --- - + # --description-- @@ -51,3 +48,47 @@ The latest technology gadgets ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md index 746bfa4615b..96ed9a633c9 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-93 --- - + # --description-- @@ -27,3 +24,47 @@ Sarah: I can see your enthusiasm, Bob! ### --feedback-- This noun describes the feeling of being very excited or interested in something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 8.60 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 2.74, + "dialogue": { + "text": "I can see your enthusiasm, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.24 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md index a7eb6fcbfcb..4f55a749a61 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-94 --- - + # --description-- @@ -22,7 +19,7 @@ Sarah: I can see your enthusiasm, Bob! Tell me, which tech gadgets are your abso ## --sentence-- -`Tell me, _ tech gadgets are your _ favorites?` +`I can see your enthusiasm, Bob! Tell me, _ gadgets are your _ favorites?` ## --blanks-- @@ -39,3 +36,47 @@ This word asks for a specific choice or selection from a known group of items. ### --feedback-- This adjective emphasizes that the choice is the most complete or total among all options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 11.36 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.50, + "dialogue": { + "text": "I can see your enthusiasm, Bob. Tell me, which gadgets are your absolute favorites?", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.00 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md index 09bd788377d..9514f27cc60 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-95 --- - + # --description-- @@ -35,3 +32,47 @@ This preposition is used to show that something belongs to or is part of somethi ### --feedback-- This noun refers to a type of watch that has more features than just telling time, often including apps and internet connectivity. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 15.20 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.66 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md index b247dacc6dd..feadc88525d 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md @@ -5,10 +5,8 @@ challengeType: 22 dashedName: task-96 --- - + + # --description-- `To track` means to follow or monitor the progress, movement, or development of something or someone. @@ -44,3 +42,47 @@ This verb means to monitor or follow the course or progress of something, especi ### --feedback-- This verb means to make it easier or possible for someone to do something by offering services or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md index 99dcae91a0c..2c3332a8708 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-97 --- - + # --description-- @@ -45,3 +42,47 @@ This adjective means arranged in a systematic way, especially on a large scale. ### --feedback-- These are alerts or messages that prompt you to remember tasks or appointments. This word ends with `s`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md index 4d36b7b2989..49fbdc264ee 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-98 --- - + # --description-- @@ -51,3 +48,56 @@ It keeps him connected, tracks his health, and helps him stay organized ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.32, + "finishTime": 10.70, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 11.20 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md index 7185d037ed7..2d1e897054c 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-99 --- - + # --description-- @@ -35,3 +32,47 @@ This word is capitalized and in plural form. ### --feedback-- This word describes advanced mobile phones with extensive computing capabilities and connectivity. It is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 25.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.98 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md index 1f660afcb03..81e873d902e 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-100 --- - + # --description-- @@ -53,3 +50,47 @@ This adjective means something can be accessed or used, like apps in an app stor ### --feedback-- This word is used to indicate the highest degree or the greatest amount of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 25.24, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.60, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.10 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md index 6998dd4ffa5..1e063e1befc 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-101 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on whether design is a factor in Sarah's stated preferences. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.56, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 3.68, + "finishTime": 8.08, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 8.58 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md index dac54e85492..92b3b88cee4 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-102 --- - + # --description-- @@ -43,3 +40,47 @@ This verb means causing a significant change or improvement in something. This w ### --feedback-- This adjective refers to something that happens every day or is part of everyday life. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md index 66cda46110d..6e56479dc8d 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-103 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Bob mentions radio as a factor in transforming daily life. ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md index ec96099aa49..93b5cc92a66 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-104 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to talk about the current period of time or the present days. ### --feedback-- This noun refers to remote-controlled flying machines, often used for photography, racing, or recreation. This word is capitalized. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 39.78 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.20, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.70 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md index 2eb13bfcb4b..7bdc1f302f5 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-105 --- - + # --description-- @@ -43,3 +40,47 @@ This verb involves examining or investigating something in order to learn more a ### --feedback-- This noun refers to the art, practice, or job of taking pictures with a camera, capturing moments, and expressions. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md index 08e3ab9b847..95aa8e526fc 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-106 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective describes something extremely beautiful or impressive. ### --feedback-- In photography, this noun means photographs or the act of taking a photograph. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md index 1b7d3770f1d..f8e77d3a9fe 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-107 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective refers to something related to the air or happening in the sky. ### --feedback-- This noun refers to the specific viewpoints or positions from which photos are taken. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md index c172cb36554..cf2a562eb4c 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-108 --- - + # --description-- @@ -51,3 +48,56 @@ They allow for stunning aerial photography ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.2, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.78, + "finishTime": 9.98, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 10.48 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md index a67e640bd01..64e3aa577d5 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-109 --- - + # --description-- @@ -35,3 +32,47 @@ This adjective in the expression means allowing access, passage, or a view throu ### --feedback-- This noun refers to things that may happen or be the case in the future, often exciting or beneficial opportunities. it is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.48, + "finishTimestamp": 49.32 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.84, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 4.34 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md index a7c5acbe452..9a5e4ff7dc6 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-110 --- - + # --description-- @@ -35,3 +32,47 @@ This noun describes a strong feeling of enthusiasm or excitement for something o ### --feedback-- In this context, this adjective means that a feeling, especially a positive one like enthusiasm, can spread from one person to others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 49.52, + "finishTimestamp": 51.74 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.22, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.72 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md index 0578945ebcc..c64025643be 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-111 --- - + # --description-- @@ -51,3 +48,47 @@ This adjective describes something that arouses curiosity or is enjoyable and en ### --feedback-- This adjective means being in touch with others or having easy access to information, especially through technology. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 51.94, + "finishTimestamp": 56.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.10, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 5.60 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md index bc02e1710e1..fe30597a170 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-112 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on the enthusiasm and positivity in Sarah's statement. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.28, + "finishTimestamp": 55.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 6.26, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob. Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 6.46, + "finishTime": 10.36, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 10.86 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md index ebba772a320..20eaca5ac90 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md @@ -1,6 +1,5 @@ --- id: 65a533f54a5afeff6c6bb996 -videoId: nLDychdBwUg title: "Dialogue 5: Discussing Open-source Software" challengeType: 21 dashedName: dialogue-5-discussing-open-source-software @@ -13,3 +12,284 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Tom", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sophie", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.5, + "dialogue": { + "text": "Hey, Sophie, what motivates you", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 3.8, + "finishTime": 6.9, + "dialogue": { + "text": "to work on open-source software projects in your free time?", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 7.8, + "finishTime": 10.2, + "dialogue": { + "text": "Well, I love contributing to open-source projects!", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 10.5, + "finishTime": 13, + "dialogue": { + "text": "I really like the sense of community and collaboration.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 13.5, + "finishTime": 15.4, + "dialogue": { + "text": "It's incredible how people from around the world", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 15.4, + "finishTime": 17.5, + "dialogue": { + "text": "come together to create something amazing.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 18.2, + "finishTime": 20.4, + "dialogue": { + "text": "Yeah. I checked out some open-source projects,", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 20.5, + "finishTime": 23.1, + "dialogue": { + "text": "but I admit that I have problems with the amount of time", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 23.1, + "finishTime": 24.3, + "dialogue": { + "text": "it can take to contribute.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 24.7, + "finishTime": 27.1, + "dialogue": { + "text": "Sometimes, it can be so time-consuming.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 27.1, + "finishTime": 29.7, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 29.9, + "finishTime": 33.3, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 33.8, + "finishTime": 36.5, + "dialogue": { + "text": "Open source is all about transparency and accessibility,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 36.5, + "finishTime": 38.4, + "dialogue": { + "text": "and that's something I truly believe in.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 39, + "finishTime": 42.2, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 42.7, + "finishTime": 45.7, + "dialogue": { + "text": "For me, I like the idea of practicing my skills", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 45.7, + "finishTime": 48, + "dialogue": { + "text": "and getting recognition for my contributions.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 48.5, + "finishTime": 51.4, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 52.4, + "finishTime": 56, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 56.4, + "finishTime": 58, + "dialogue": { + "text": "there isn't much you can do to save it.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 58.4, + "finishTime": 61.4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 62.2, + "finishTime": 65.2, + "dialogue": { + "text": "That's true. The sustainability of open-source projects", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 65.2, + "finishTime": 67.5, + "dialogue": { + "text": "is something I'm growing to appreciate more.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 67.8, + "finishTime": 69.2, + "dialogue": { + "text": "Thanks for sharing your motivations.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 69.8, + "finishTime": 71.7, + "dialogue": { + "text": "I think I'll see if I can find a project", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 71.7, + "finishTime": 72.8, + "dialogue": { + "text": "to dedicate some spare time to.", + "align": "left" + } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 73.3 + }, + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 73.8 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md index a463dcea5d0..ee5d378ba03 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-113 --- - + # --description-- @@ -37,3 +34,47 @@ This preposition is used to indicate involvement or engagement in a particular a ### --feedback-- This part of the term refers to the origin or starting point, in this case, indicating that the software's foundational code is open and accessible to all. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md index 2d227ef6fe5..1e409d23632 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-114 --- - + # --description-- @@ -51,3 +48,47 @@ Think about whether Tom is asking about skills or the reasons behind an activity ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md index ab28bfe2622..395d2fa3522 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-115 --- - + # --description-- @@ -20,7 +17,7 @@ Sophie: Well, I love contributing to open-source projects! I really like the sen ## --sentence-- -`I really like the sense of _ and _.` +`Well, I love contributing to open-source projects! I really like the sense of _ and _.` ## --blanks-- @@ -37,3 +34,47 @@ Describes a group of people who share common interests or values, especially in ### --feedback-- Refers to the act of working with someone to produce or create something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md index c9e678c193b..e321ce0b307 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-116 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Sophie's enjoyment comes from personal recognition or somethi ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md index 7b9101449a3..6a2c024d0c1 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-117 --- - + # --description-- @@ -45,3 +42,47 @@ Refers to the earth or the globe. ### --feedback-- Indicates the act of joining with others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md index d2ba30725da..3917f0f08f3 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-118 --- - + # --description-- @@ -51,3 +48,47 @@ Sophie talks about working as a group. Is it about being famous or doing somethi ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md index a0b608d8342..a41f1bfc8cb 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-119 --- - + # --description-- @@ -20,7 +17,7 @@ Tom: Yeah. I checked some open-source projects, but I admit that I have problems ## --sentence-- -`Yeah. I checked some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` +`Yeah, I checked out some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` ## --blanks-- @@ -37,3 +34,47 @@ This verb means to confess or acknowledge something, often reluctantly. ### --feedback-- This noun is used to describe the quantity or measure of something, in this case, referring to time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 23.34 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.28, + "dialogue": { + "text": "Yeah, I checked out some open-source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.78 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md index 6bcebcf1558..64acf0261ac 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-120 --- - + # --description-- @@ -18,7 +15,7 @@ Tom "Sometimes, it can be so time-consuming." ## --sentence-- -`Sometimes, it can be _ time-_.` +`Sometimes it can be _ time-_.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to emphasize the degree of something, in this case, how much t ### --feedback-- This word describes activities that use up a lot of time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 23.52, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.64, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.14 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md index 2bbaf6f322f..a2ad29fdb26 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-121 --- - + # --description-- @@ -51,3 +48,56 @@ Think about if Tom says the projects are easy or something else. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Yeah, I checked out some open source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 7.46, + "finishTime": 10.10, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 10.60 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md index 26975fa42d5..52145efc9dc 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-122 --- - + # --description-- @@ -21,7 +18,7 @@ For example, if you say: `I decided to learn a new language and practice every d ## --sentence-- -`It can _ a _.` +`I understand, Tom. It can _ a _.` ## --blanks-- @@ -38,3 +35,47 @@ This word is used to talk about something being true or existing. ### --feedback-- This word means a promise to do something or give your time to it, showing you are ready to work hard and keep your word. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 28.72 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md index 4232fcd5dbb..10d1d55dd1f 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-123 --- - + # --description-- @@ -35,3 +32,47 @@ This verb, in this context, means to tolerate or bear, especially when talking a ### --feedback-- This adjective describes something not open or accessible to the general public or kept for the use of a specific person or group. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md index 25acc5b187b..4920280d317 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-124 --- - + # --description-- @@ -35,3 +32,47 @@ This word, ending in `-ing`, means to observe or witness something happening.. ### --feedback-- Also ending in `-ing`, this word is used to describe the state or condition of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md index e4878ae4f6c..feb206c8d3b 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-125 --- - + # --description-- @@ -37,3 +34,51 @@ This word means being open and clear about things. It ends with `-y`, showing it ### --feedback-- This word is about making things easy for everyone to use or get. It ends with `-ity`, showing it's about the state of being accessible. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 32.52, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 5.74, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.24 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md index 2e6e266c6ab..b1b1c1ca42c 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-126 --- - + # --description-- -Sophie expresses her thoughts on open-source projects.. +Sophie expresses her thoughts on open-source projects. # --question-- @@ -51,3 +48,56 @@ Reflect on Sophie's belief in open source and its benefits. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 7.16, + "dialogue": { + "text": "I understand, Tom. It can be a commitment, but I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.56, + "finishTime": 12.10, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 12.60 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md index 9ef306c9252..e6c5fe030c7 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-127 --- - + # --description-- @@ -35,3 +32,51 @@ This noun refers to the quality of being open and clear, especially about proces ### --feedback-- This noun describes something that provides a reason or incentive for someone to act in a certain way or to put in more effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 41.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md index bbaba54e9e1..e05f1982063 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-128 --- - + # --description-- @@ -37,3 +34,51 @@ This verb means to perform an activity or exercise repeatedly or regularly in or ### --feedback-- This noun refers to the action or process of acknowledging someone's efforts, achievements, or qualities. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 41.5, + "finishTimestamp": 47.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.62, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.12 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md index a821137445a..5d15ffd7545 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-129 --- - + # --description-- @@ -35,3 +32,51 @@ This adjective is used to describe something that is very good or impressive. ### --feedback-- This adjective means having the ability, power, or qualities necessary to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 47.54, + "finishTimestamp": 50.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.9, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.4 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md index 76ee25756a6..045d8463245 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-130 --- - + # --description-- @@ -51,3 +48,69 @@ Reflect on whether Tom's attraction to open-source is about tight schedules. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 50.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.42, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.88, + "finishTime": 10.2, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 10.72, + "finishTime": 13.62, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 14.12 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md index f47924c5a21..763fa02b646 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-131 --- - + # --description-- @@ -18,7 +15,7 @@ Sophie: Also, when software becomes obsolete because it's no longer maintained, ## --sentence-- -`Also, when software becomes _, there isn't _ you can do to _ it.` +`Also, when software becomes _ because it's no longer maintained, there isn't _ you can do to _ it.` ## --blanks-- @@ -43,3 +40,51 @@ This word is used to indicate a small amount or degree; not a lot. ### --feedback-- This verb means to keep safe or rescue from harm or danger, in this context, to try and make something usable again. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md index 27b0dbb43cf..a187bb8b293 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-132 --- - + # --description-- @@ -43,3 +40,51 @@ Something that once was true or possible is not the case anymore. ### --feedback-- This contraction of `is not` is used to express the negation of the statement that follows, indicating a limitation or impossibility. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md index 8941733f8b9..ca97fa188f9 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-133 --- - + # --description-- @@ -51,3 +48,51 @@ It can't be used effectively anymore ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md index e225360b121..baadc6b07e8 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-134 --- - + # --description-- @@ -18,7 +15,7 @@ AUDIO REFERENCE: ## --sentence-- -`With open-_, there's always a _ for continuous improvement.` +`With open _, there's always a _ for continuous improvement.` ## --blanks-- @@ -35,3 +32,51 @@ Refers to a model where the source code is available for anyone to see, modify, ### --feedback-- This noun means an opportunity or possibility for something to happen or be done, especially something desirable. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md index 410699942ed..15c83340f6f 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-135 --- - + # --description-- @@ -35,3 +32,51 @@ It indicates an ongoing, unending process of enhancement or development. ### --feedback-- It refers to the act of making something better, more effective, or more efficient. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md index a8c886124e7..7718697bd96 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-137 --- - + # --description-- @@ -27,3 +24,51 @@ Tom: The sustainability of open-source projects is something I'm growing to appr ### --feedback-- It refers to the ongoing development of open-source projects over the long term. it ends with `-y`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md index dcc88c43208..d6ae5f89d89 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-138 --- - + # --description-- -`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time,` means they might not like them at first, but after some timethey start to like them more. +`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time` means they might not like them at first, but after some timethey start to like them more. # --fillInTheBlank-- @@ -34,4 +31,52 @@ This word means being able to continue over time in a good way. ### --feedback-- -Starting to like something more as you understand it better. +Starting to like something more as you understand it better. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md index ecd1d6e7c95..abc9cf2415f 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-139 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on Tom's statement about sustainability and appreciation, not complexity ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md index a6a32b631e8..87c40eaf830 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-140 --- - + # --description-- @@ -47,3 +44,51 @@ This verb means to discover or locate something after searching for it. ### --feedback-- Describes time that is available to use as you wish, not taken up by work or other obligations. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md index bd2fddb1bb4..52d0740b1db 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-141 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on whether Tom's interest is in language learning or engaging in a proje ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md index ea7dbd6dc1e..05dc28f6ddc 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-1 --- - + # --description-- @@ -18,7 +15,7 @@ Listen to what Brian asks Maria. Pay attention to the verbs he uses. ## --sentence-- -`Hey Maria, I _ a question. Do you know what _ the team?` +`Maria, I _ a question. Do you know what _ the team?` ## --blanks-- @@ -35,3 +32,47 @@ This verb is used when someone is in possession of something or wants to express ### --feedback-- This word means to give someone a reason to do something. This verb in conjugated in the third person. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 3.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.02 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md index d39e86e67e9..ef6b246a2e4 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-2 --- - + # --description-- @@ -39,3 +36,47 @@ This word is used to indicate the reason or cause of something. It is conjugated ### --feedback-- It ends with `-ed` because it's an adjective that comes from a verb. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 3.92, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.50, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.00 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md index 5c39c1c7312..050241fa5e6 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-3 --- - + # --description-- @@ -20,7 +17,7 @@ Listen to the audio and complete the sentence. ## --sentence-- -`Hey Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` +`Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` ## --blanks-- @@ -37,3 +34,56 @@ Think about the word that means to give someone a reason to do something right n ### --feedback-- This word describes how someone feels when they have a reason or desire to do something. This word ends with `-ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md index 4a6aa89ed04..90a6bbe82b3 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md @@ -5,20 +5,17 @@ challengeType: 19 dashedName: task-4 --- - + # --description-- -In the dialogue, Brian asks three questions but they are all connected. +In the dialogue, Brian asks a couple of related questions. # --question-- ## --text-- -`What is Brian asking Maria about?` +What is Brian asking Maria about? ## --answers-- @@ -51,3 +48,56 @@ The conversation is centered around motivation, not the physical location of whe ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md index 3e923e63532..f725307b614 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-21 --- - + # --description-- @@ -36,3 +33,46 @@ This word means working together with others on a project or task. It ends with This word means thinking of many ideas together with a group of people. It ends with `-ing`. +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md index 1c4102ed1d3..2522ee2b5e1 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-22 --- - + # --description-- @@ -51,3 +48,47 @@ Maria refers to her creative team, not her friends, as her collaborators. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.28 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.28 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md index c3f28429a68..ab0e4646869 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-23 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to create or produce something, especially ideas or solutions. ### --feedback-- This word refers to ideas or plans that are used in thinking, discussion, or creating something new. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 41.84, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.78, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.28 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md index c2510030f2c..8795bdf6d10 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-24 --- - + # --description-- @@ -51,3 +48,56 @@ Collaborating with the creative team ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.70, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.14, + "finishTime": 7.92, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 8.42 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md index 3c6ee35860c..b801e7efce9 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-25 --- - + # --description-- @@ -35,3 +32,47 @@ This word means working together with others to achieve a goal. This word is cap ### --feedback-- This word refers to the use of imagination or original ideas to create something. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 48.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.22 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md index a9680b0824a..75c938c595f 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-27 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to find something or someone without planning to, especially pro ### --feedback-- This word is used for problems with machines or computers that need special knowledge to understand or fix. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md index 5ee0b89f981..89a97ac83d7 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-29 --- - + # --description-- @@ -27,3 +24,47 @@ When something is `frustrating`, it makes you feel upset or annoyed because you ### --feedback-- This word is used when something makes you feel upset or annoyed because it is difficult or impossible to deal with. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 53.02, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.50, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.00 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md index 1f9e7b21387..02733f0f66c 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-30 --- - + # --description-- @@ -51,3 +48,65 @@ Does having many ideas make Brian frustrated, or is it something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 5.02, + "finishTime": 9.34, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 9.74, + "finishTime": 11.24, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 11.74 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md index 3dddb17e8ef..47e9d5633b4 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-31 --- - + # --description-- @@ -35,3 +32,47 @@ This word means little problems with things like computers or apps. When there a ### --feedback-- This word means to make an effort to do something, especially when it's hard. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md index fe21921444c..ce9ced73581 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-33 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether taking a break is mentioned as a way to deal with glitches. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md index 69d94c303e5..7c44898f823 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-34 --- - + # --description-- @@ -37,3 +34,47 @@ This word means being very excited or eager about something. It's like when you ### --feedback-- This word means finding a way to fix a problem. It's like when you figure out the answer to a difficult question. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.76, + "finishTimestamp": 65.66 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.90, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.40 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md index 0365cb0e9f0..17d79cd22ec 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md @@ -6,10 +6,7 @@ dashedName: task-36 --- - + # --description-- @@ -52,3 +49,56 @@ Reflect on whether the speed of solving problems is what Maria highlights as mot ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.96, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.7, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.16, + "finishTime": 8.84, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 9.34 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md index 7525fdadd5f..39df7aceed5 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-37 --- - + # --description-- @@ -18,7 +15,7 @@ In this part of the conversation, Brian talks about how the talk made him feel a ## --sentence-- -`Yeah. Wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` +`Yeah, wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` ## --blanks-- @@ -35,3 +32,47 @@ This word means something that gives you energy or a reason to do something. It' ### --feedback-- This word means giving something that you have to others. It's like when you tell someone your ideas or feelings. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 70.38, + "finishTimestamp": 76.10 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 6.72, + "dialogue": { + "text": "Yeah, wow. You know what? This was a really motivating talk. Thanks for sharing your thoughts.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.22 + } + ] +} +``` diff --git a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md index 6bb2b29cd3b..b1bcee11103 100644 --- a/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md +++ b/curriculum/challenges/italian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-136 --- - + # --description-- @@ -51,3 +48,60 @@ Reflect on the connection between updates and user experience Sophie suggests. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.02, + "finishTime": 10.02, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md b/curriculum/challenges/japanese/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md index 1d5a4271a7d..5d3e1634bb3 100644 --- a/curriculum/challenges/japanese/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md +++ b/curriculum/challenges/japanese/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md @@ -26,7 +26,7 @@ HTML5 の `audio` 要素は、サウンドやオーディオストリームコ # --instructions-- -Camper Cat から少し離れる時間を取って、アクセシビリティの達人でありスクリーンリーダーのユーザーでもあるキャンパー仲間、Zersiax (@zersiax) をご紹介します。 彼のスクリーンリーダーが動作する様子の音声を聴くには、`p` 要素の後ろに `audio` 要素を追加します。 `controls` 属性を含めましょう。 次に `audio` タグの中に、`src` 属性に `https://s3.amazonaws.com/freecodecamp/screen-reader.mp3` を、`type` 属性に `"audio/mpeg"` を設定した `source` 要素を配置します。 +Camper Cat から少し離れる時間を取って、アクセシビリティの達人でありスクリーンリーダーのユーザーでもあるキャンパー仲間、Zersiax (@zersiax) をご紹介します。 彼のスクリーンリーダーが動作する様子の音声を聴くには、`p` 要素の後ろに `audio` 要素を追加します。 `controls` 属性を含めましょう。 Then place a `source` element inside the `audio` tags with the `src` attribute set to `https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3` and `type` attribute set to `"audio/mpeg"`. **注:** 音声が高速に聞こえて理解しにくいかもしれませんが、これはスクリーンリーダーのユーザーにとっては通常の速度です。 @@ -70,7 +70,7 @@ assert($('audio').children('source').length === 1); ```js assert( $('source').attr('src') === - 'https://s3.amazonaws.com/freecodecamp/screen-reader.mp3' + 'https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3' ); ``` @@ -108,7 +108,7 @@ assert($('source').attr('type') === 'audio/mpeg');

A sound clip of Zersiax's screen reader in action.

diff --git a/curriculum/challenges/japanese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md b/curriculum/challenges/japanese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md index 828dae1f686..2a0da9ed7ab 100644 --- a/curriculum/challenges/japanese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md +++ b/curriculum/challenges/japanese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md @@ -93,7 +93,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -186,7 +186,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/japanese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md b/curriculum/challenges/japanese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md index 5359522cc2f..571901838ee 100644 --- a/curriculum/challenges/japanese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md +++ b/curriculum/challenges/japanese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md @@ -102,7 +102,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -198,7 +198,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/japanese/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md b/curriculum/challenges/japanese/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md index ad0fef57888..0b29bd249e5 100644 --- a/curriculum/challenges/japanese/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md +++ b/curriculum/challenges/japanese/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md @@ -95,7 +95,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -190,7 +190,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/japanese/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md b/curriculum/challenges/japanese/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md index 56172e4f837..06b20ea79bb 100644 --- a/curriculum/challenges/japanese/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md +++ b/curriculum/challenges/japanese/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md @@ -98,7 +98,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -192,7 +192,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md new file mode 100644 index 00000000000..47a2bcd6988 --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md @@ -0,0 +1,887 @@ +--- +id: 5e44413e903586ffb414c94e +title: Build a Budget App Project +challengeType: 23 +forumTopicId: 462361 +dashedName: build-a-budget-app-project +--- + +# --description-- + +Complete the `Category` class. It should be able to instantiate objects based on different budget categories like *food*, *clothing*, and *entertainment*. When objects are created, they are passed in the name of the category. The class should have an instance variable called `ledger` that is a list. The class should also contain the following methods: + +- A `deposit` method that accepts an amount and description. If no description is given, it should default to an empty string. The method should append an object to the ledger list in the form of `{"amount": amount, "description": description}`. +- A `withdraw` method that is similar to the `deposit` method, but the amount passed in should be stored in the ledger as a negative number. If there are not enough funds, nothing should be added to the ledger. This method should return `True` if the withdrawal took place, and `False` otherwise. +- A `get_balance` method that returns the current balance of the budget category based on the deposits and withdrawals that have occurred. +- A `transfer` method that accepts an amount and another budget category as arguments. The method should add a withdrawal with the amount and the description "Transfer to [Destination Budget Category]". The method should then add a deposit to the other budget category with the amount and the description "Transfer from [Source Budget Category]". If there are not enough funds, nothing should be added to either ledgers. This method should return `True` if the transfer took place, and `False` otherwise. +- A `check_funds` method that accepts an amount as an argument. It returns `False` if the amount is greater than the balance of the budget category and returns `True` otherwise. This method should be used by both the `withdraw` method and `transfer` method. + +When the budget object is printed it should display: + +- A title line of 30 characters where the name of the category is centered in a line of `*` characters. +- A list of the items in the ledger. Each line should show the description and amount. The first 23 characters of the description should be displayed, then the amount. The amount should be right aligned, contain two decimal places, and display a maximum of 7 characters. +- A line displaying the category total. + +Here is an example usage: + +```py +food = Category("Food") +food.deposit(1000, "deposit") +food.withdraw(10.15, "groceries") +food.withdraw(15.89, "restaurant and more food for dessert") +clothing = Category("Clothing") +food.transfer(50, clothing) +print(food) +``` + +And here is an example of the output: + +```bash +*************Food************* +initial deposit 1000.00 +groceries -10.15 +restaurant and more foo -15.89 +Transfer to Clothing -50.00 +Total: 923.96 +``` + +Besides the `Category` class, create a function (outside of the class) called `create_spend_chart` that takes a list of categories as an argument. It should return a string that is a bar chart. + +The chart should show the percentage spent in each category passed in to the function. The percentage spent should be calculated only with withdrawals and not with deposits. Down the left side of the chart should be labels 0 - 100. The "bars" in the bar chart should be made out of the "o" character. The height of each bar should be rounded down to the nearest 10. The horizontal line below the bars should go two spaces past the final bar. Each category name should be written vertically below the bar. There should be a title at the top that says "Percentage spent by category". + +This function will be tested with up to four categories. + +Look at the example output below very closely and make sure the spacing of the output matches the example exactly. + +```bash +Percentage spent by category +100| + 90| + 80| + 70| + 60| o + 50| o + 40| o + 30| o + 20| o o + 10| o o o + 0| o o o + ---------- + F C A + o l u + o o t + d t o + h + i + n + g +``` + +# --hints-- + +The `deposit` method should create a specific object in the ledger instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit(self): + self.food.deposit(900, "deposit") + actual = self.food.ledger[0] + expected = {"amount": 900, "description": "deposit"} + self.assertEqual(actual, expected, 'Expected "deposit" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `deposit` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit_no_description(self): + self.food.deposit(45.56) + actual = self.food.ledger[0] + expected = {"amount": 45.56, "description": ""} + self.assertEqual(actual, expected, 'Expected calling "deposit" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should create a specific object in the `ledger` instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": "milk, cereal, eggs, bacon, bread"} + self.assertEqual(actual, expected, 'Expected "withdraw" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `withdraw` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": ""} + self.assertEqual(actual, expected, 'Expected "withdraw" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `True` if the withdrawal took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + self.assertEqual(good_withdraw, True, 'Expected "withdraw" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `food.deposit(900, "deposit")` and `food.withdraw(45.67, "milk, cereal, eggs, bacon, bread")` should return a balance of `854.33`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_get_balance(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.get_balance() + expected = 854.33 + self.assertEqual(actual, expected, 'Expected balance to be 854.33') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `transfer` method on a category object should create a specific ledger item in that category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.food.ledger[2] + expected = {"amount": -transfer_amount, "description": "Transfer to Entertainment"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `True` if the transfer took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + self.assertEqual(good_transfer, True, 'Expected "transfer" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `transfer` on a category object should reduce the balance in the category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + food_balance_before = self.food.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + food_balance_after = self.food.get_balance() + self.assertEqual(food_balance_before - food_balance_after, transfer_amount, 'Expected "transfer" method to reduce balance in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should increase the balance of the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + entertainment_balance_before = self.entertainment.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + entertainment_balance_after = self.entertainment.get_balance() + self.assertEqual(entertainment_balance_after - entertainment_balance_before, transfer_amount, 'Expected "transfer" method to increase balance in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should create a specific ledger item in the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.entertainment.ledger[0] + expected = {"amount": transfer_amount, "description": "Transfer from Food"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `False` if the amount passed to the method is greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(20) + expected = False + self.assertEqual(actual, expected, 'Expected "check_funds" method to be False') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `True` if the amount passed to the method is not greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(10) + expected = True + self.assertEqual(actual, expected, 'Expected "check_funds" method to be True') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `False` if the withdrawal didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_funds(self): + self.food.deposit(100, "deposit") + good_withdraw = self.food.withdraw(100.10) + self.assertEqual(good_withdraw, False, 'Expected "withdraw" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `False` if the transfer didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer_no_funds(self): + self.food.deposit(100, "deposit") + good_transfer = self.food.transfer(200, self.entertainment) + self.assertEqual(good_transfer, False, 'Expected "transfer" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Printing a `Category` instance should give a different string representation of the object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_to_string(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + self.food.transfer(20, self.entertainment) + actual = str(self.food) + expected = "*************Food*************\\ndeposit 900.00\\nmilk, cereal, eggs, bac -45.67\\nTransfer to Entertainme -20.00\\nTotal: 834.33" + self.assertEqual(actual, expected, 'Expected different string representation of object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +` + const out = runPython(testCode); + assert(out); + } +}) +``` + +`create_spend_chart` should print a different chart representation. Check that all spacing is exact. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + self.business = budget.Category("Business") + + def test_create_spend_chart(self): + self.food.deposit(900, "deposit") + self.entertainment.deposit(900, "deposit") + self.business.deposit(900, "deposit") + self.food.withdraw(105.55) + self.entertainment.withdraw(33.40) + self.business.withdraw(10.99) + actual = budget.create_spend_chart([self.business, self.food, self.entertainment]) + expected = "Percentage spent by category\\n100| \\n 90| \\n 80| \\n 70| o \\n 60| o \\n 50| o \\n 40| o \\n 30| o \\n 20| o o \\n 10| o o \\n 0| o o o \\n ----------\\n B F E \\n u o n \\n s o t \\n i d e \\n n r \\n e t \\n s a \\n s i \\n n \\n m \\n e \\n n \\n t " + self.assertEqual(actual, expected, 'Expected different chart representation. Check that all spacing is exact.') +`); + + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Category: + pass + +def create_spend_chart(categories): + pass +``` + +# --solutions-- + +```py +class Category: + + def __init__(self, name): + self.name = name + self.ledger = [] + self.balance = 0 + self.spent = 0 + + def __str__(self): + first_line = f'{self.name.center(30, "*")}\n' + lines = '' + total = f'Total: {format(self.balance, ".2f")}' + + for n in range(len(self.ledger)): + descr = self.ledger[n]["description"][:23] + am = format(float(self.ledger[n]["amount"]), ".2f")[:7] + lines = lines + f'{descr:<23}{am:>7}\n' + + return f'{first_line}{lines}{total}' + + def deposit(self, amount, description=''): + self.ledger.append({ + 'amount': float(amount), + 'description': description + }) + self.balance = self.balance + float(amount) + + def withdraw(self, amount, description=''): + if self.check_funds(amount): + self.ledger.append({ + 'amount': -float(amount), + 'description': description + }) + self.balance = self.balance - float(amount) + self.spent = self.spent + float(amount) + return True + else: + return False + + def get_balance(self): + return self.balance + + def transfer(self, amount, category): + if self.check_funds(amount): + # withdraw + self.ledger.append({ + 'amount': -float(amount), + 'description': f'Transfer to {category.name}' + }) + self.balance = self.balance - float(amount) + # deposit + category.deposit(amount, f'Transfer from {self.name}') + + return True + else: + return False + + def check_funds(self, amount): + if float(amount) > self.balance: + return False + else: + return True + + +def create_spend_chart(categories): + total_expenses = 0 + obj = {} + col1 = [] + str = [] + final_str = 'Percentage spent by category\n' + label_max_length = 0 + label_strings = [] + + for category in categories: + total_expenses = total_expenses + category.spent + obj[category.name] = {'expenses': category.spent} + obj[category.name]['label'] = list(category.name) + if len(obj[category.name]['label']) > label_max_length: + label_max_length = len(obj[category.name]['label']) + + for category in categories: + obj[category.name]['percent'] = ( + (category.spent / total_expenses * 100) // 10) * 10 + obj[category.name]['column'] = [] + for i in range(0, 110, 10): + if obj[category.name]['percent'] >= i: + obj[category.name]['column'].insert(0, 'o') + else: + obj[category.name]['column'].insert(0, ' ') + + for i in range(0, 110, 10): + col1.insert(0, i) + + for i in range(11): + str.append("") + for key in obj: + str[i] += (f'{obj[key]["column"][i]} ') + final_str += f'{col1[i]:>3}| {str[i]}\n' + final_str += f' {"-"*(1+3*len(obj))}\n ' + + for i in range(label_max_length): + label_strings.append(' ') + for k in obj: + if len(obj[k]['label']) < label_max_length: + obj[k]['label'].extend( + f'{" "*(label_max_length-len(obj[k]["label"]))}') + + label_strings[i] += f'{obj[k]["label"][i]} ' + if i < label_max_length - 1: + label_strings[i] += '\n ' + final_str += label_strings[i] + + print(final_str) + return (final_str) + +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md new file mode 100644 index 00000000000..ef719adc3a7 --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md @@ -0,0 +1,869 @@ +--- +id: 5e444147903586ffb414c94f +title: Build a Polygon Area Calculator Project +challengeType: 23 +forumTopicId: 462363 +dashedName: build-a-polygon-area-calculator-project +--- + +# --description-- + +In this project you will use object oriented programming to create a `Rectangle` class and a `Square` class. The `Square` class should be a subclass of `Rectangle`, and inherit its methods and attributes. + +## Rectangle class + +When a Rectangle object is created, it should be initialized with `width` and `height` attributes. The class should also contain the following methods: + +- `set_width` +- `set_height` +- `get_area`: Returns area (`width * height`) +- `get_perimeter`: Returns perimeter (`2 * width + 2 * height`) +- `get_diagonal`: Returns diagonal (`(width ** 2 + height ** 2) ** .5`) +- `get_picture`: Returns a string that represents the shape using lines of "\*". The number of lines should be equal to the height and the number of "\*" in each line should be equal to the width. There should be a new line (`\n`) at the end of each line. If the width or height is larger than 50, this should return the string: "Too big for picture.". +- `get_amount_inside`: Takes another shape (square or rectangle) as an argument. Returns the number of times the passed in shape could fit inside the shape (with no rotations). For instance, a rectangle with a width of 4 and a height of 8 could fit in two squares with sides of 4. + +Additionally, if an instance of a `Rectangle` is represented as a string, it should look like: `Rectangle(width=5, height=10)` + +## Square class + +The `Square` class should be a subclass of `Rectangle`. When a `Square` object is created, a single side length is passed in. The `__init__` method should store the side length in both the `width` and `height` attributes from the `Rectangle` class. + +The `Square` class should be able to access the `Rectangle` class methods but should also contain a `set_side` method. If an instance of a `Square` is represented as a string, it should look like: `Square(side=9)` + +Additionally, the `set_width` and `set_height` methods on the `Square` class should set both the width and height. + +## Usage example + +```py +rect = Rectangle(10, 5) +print(rect.get_area()) +rect.set_height(3) +print(rect.get_perimeter()) +print(rect) +print(rect.get_picture()) + +sq = Square(9) +print(sq.get_area()) +sq.set_side(4) +print(sq.get_diagonal()) +print(sq) +print(sq.get_picture()) + +rect.set_height(8) +rect.set_width(16) +print(rect.get_amount_inside(sq)) +``` + +That code should return: + +```bash +50 +26 +Rectangle(width=10, height=3) +********** +********** +********** + +81 +5.656854249492381 +Square(side=4) +**** +**** +**** +**** + +8 +``` + +# --hints-- + +The `Square` class should be a subclass of the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_subclass(self): + actual = issubclass(shape_calculator.Square, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a subclass of the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `Square` class should be a distinct class from the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_distinct_classes(self): + actual = shape_calculator.Square is not shape_calculator.Rectangle + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a distinct class from the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +A square object should be an instance of the `Square` class and the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_is_square_and_rectangle(self): + actual = isinstance(self.sq, shape_calculator.Square) and isinstance(self.sq, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected square object to be an instance of the Square class and the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Rectangle(3, 6)` should be `Rectangle(width=3, height=6)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_string(self): + actual = str(self.rect) + expected = "Rectangle(width=3, height=6)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle to be "Rectangle(width=3, height=6)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Square(5)` should be `Square(side=5)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_string(self): + actual = str(self.sq) + expected = "Square(side=5)" + self.assertEqual(actual, expected, 'Expected string representation of square to be "Square(side=5)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_area()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_area(self): + actual = self.rect.get_area() + expected = 18 + self.assertEqual(actual, expected, 'Expected area of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_area()` should return `25`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_area(self): + actual = self.sq.get_area() + expected = 25 + self.assertEqual(actual, expected, 'Expected area of square to be 25') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_perimeter()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_perimeter(self): + actual = self.rect.get_perimeter() + expected = 18 + self.assertEqual(actual, expected, 'Expected perimeter of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_perimeter()` should return `20`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_perimeter(self): + actual = self.sq.get_perimeter() + expected = 20 + self.assertEqual(actual, expected, 'Expected perimeter of square to be 20') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_diagonal()` should return `6.708203932499369`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_diagonal(self): + actual = self.rect.get_diagonal() + expected = 6.708203932499369 + self.assertEqual(actual, expected, 'Expected diagonal of rectangle to be 6.708203932499369') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_diagonal()` should return `7.0710678118654755`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_diagonal(self): + actual = self.sq.get_diagonal() + expected = 7.0710678118654755 + self.assertEqual(actual, expected, 'Expected diagonal of square to be 7.0710678118654755') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Rectangle` class should have a different string representation after setting new values. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_set_attributes(self): + self.rect.set_width(7) + self.rect.set_height(8) + actual = str(self.rect) + expected = "Rectangle(width=7, height=8)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle after setting new values to be "Rectangle(width=7, height=8)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_side()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_side(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_width()` or `set_height()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_height(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') + self.sq.set_width(4) + actual = str(self.sq) + expected = "Square(side=4)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting width to be "Square(side=4)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Rectangle` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_picture(self): + self.rect.set_width(7) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "*******\\n*******\\n*******\\n" + self.assertEqual(actual, expected, 'Expected rectangle picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Square` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_picture(self): + self.sq.set_side(2) + actual = self.sq.get_picture() + expected = "**\\n**\\n" + self.assertEqual(actual, expected, 'Expected square picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return the string `Too big for picture.` if the `width` or `height` attributes are larger than `50`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_big_picture(self): + self.rect.set_width(51) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "Too big for picture." + self.assertEqual(actual, expected, 'Expected message: "Too big for picture."') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(15,10).get_amount_inside(Square(5))` should return `6`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + self.sq = shape_calculator.Square(5) + + def test_get_amount_inside(self): + self.rect.set_height(10) + self.rect.set_width(15) + actual = self.rect.get_amount_inside(self.sq) + expected = 6 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 6.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(4,8).get_amount_inside(Rectangle(3, 6))` should return `1`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_two_rectangles(self): + rect2 = shape_calculator.Rectangle(4, 8) + actual = rect2.get_amount_inside(self.rect) + expected = 1 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 1.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(2,3).get_amount_inside(Rectangle(3, 6))` should return `0`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_none(self): + rect2 = shape_calculator.Rectangle(2, 3) + actual = rect2.get_amount_inside(self.rect) + expected = 0 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 0.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Rectangle: + pass + +class Square: + pass +``` + +# --solutions-- + +```py +class Rectangle: + def __init__(self, width, height): + self.width = width + self.height = height + + def __str__(self): + return f'Rectangle(width={self.width}, height={self.height})' + + def set_width(self, width): + self.width = width + + def set_height(self, height): + self.height = height + + def get_area(self): + area = self.width * self.height + return area + + def get_perimeter(self): + perimeter = self.width * 2 + self.height * 2 + return perimeter + + def get_diagonal(self): + diagonal = (self.width ** 2 + self.height ** 2) ** 0.5 + return diagonal + + def get_picture(self): + if self.width < 50 and self.height < 50: + picture = f'{"*"*self.width}\n'*self.height + return picture + else: + return 'Too big for picture.' + + def get_amount_inside(self, polygon): + h_number = self.height // polygon.height + w_number = self.width // polygon.width + repetition = h_number * w_number + return repetition + + +class Square(Rectangle): + def __init__(self, side): + self.width = side + self.height = side + + def __str__(self): + return f'Square(side={self.width})' + + def set_width(self, side): + self.width = side + self.height = side + + def set_height(self, side): + self.height = side + self.width = side + + def set_side(self,side): + self.width = side + self.height = side + +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md new file mode 100644 index 00000000000..94cf5c682de --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md @@ -0,0 +1,300 @@ +--- +id: 5e44414f903586ffb414c950 +title: Build a Probability Calculator Project +challengeType: 23 +forumTopicId: 462364 +dashedName: build-a-probability-calculator-project +--- + +# --description-- + +Suppose there is a hat containing 5 blue balls, 4 red balls, and 2 green balls. What is the probability that a random draw of 4 balls will contain at least 1 red ball and 2 green balls? While it would be possible to calculate the probability using advanced mathematics, an easier way is to write a program to perform a large number of experiments to estimate an approximate probability. + +For this project, you will write a program to determine the approximate probability of drawing certain balls randomly from a hat. + +First, create a `Hat` class in `main.py`. The class should take a variable number of arguments that specify the number of balls of each color that are in the hat. For example, a class object could be created in any of these ways: + +```py +hat1 = Hat(yellow=3, blue=2, green=6) +hat2 = Hat(red=5, orange=4) +hat3 = Hat(red=5, orange=4, black=1, blue=0, pink=2, striped=9) +``` + +A hat will always be created with at least one ball. The arguments passed into the hat object upon creation should be converted to a `contents` instance variable. `contents` should be a list of strings containing one item for each ball in the hat. Each item in the list should be a color name representing a single ball of that color. For example, if your hat is `{"red": 2, "blue": 1}`, `contents` should be `["red", "red", "blue"]`. + +The `Hat` class should have a `draw` method that accepts an argument indicating the number of balls to draw from the hat. This method should remove balls at random from `contents` and return those balls as a list of strings. The balls should not go back into the hat during the draw, similar to an urn experiment without replacement. If the number of balls to draw exceeds the available quantity, return all the balls. + +Next, create an `experiment` function in `main.py` (not inside the `Hat` class). This function should accept the following arguments: + +- `hat`: A hat object containing balls that should be copied inside the function. +- `expected_balls`: An object indicating the exact group of balls to attempt to draw from the hat for the experiment. For example, to determine the probability of drawing 2 blue balls and 1 red ball from the hat, set `expected_balls` to `{"blue":2, "red":1}`. +- `num_balls_drawn`: The number of balls to draw out of the hat in each experiment. +- `num_experiments`: The number of experiments to perform. (The more experiments performed, the more accurate the approximate probability will be.) + +The `experiment` function should return a probability. + +For example, if you want to determine the probability of getting at least two red balls and one green ball when you draw five balls from a hat containing six black, four red, and three green. To do this, you will perform `N` experiments, count how many times `M` you get at least two red balls and one green ball, and estimate the probability as `M/N`. Each experiment consists of starting with a hat containing the specified balls, drawing several balls, and checking if you got the balls you were attempting to draw. + +Here is how you would call the `experiment` function based on the example above with 2000 experiments: + +```py +hat = Hat(black=6, red=4, green=3) +probability = experiment(hat=hat, + expected_balls={"red":2,"green":1}, + num_balls_drawn=5, + num_experiments=2000) +``` + +The output would be something like this: + +```bash +0.356 +``` + +Since this is based on random draws, the probability will be slightly different each time the code is run. + +_Hint: Consider using the modules that are already imported at the top. Do not initialize random seed within the file._ + + +# --hints-- + +Creation of `hat` object should add correct contents. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_class_contents(self): + hat = probability_calculator.Hat(red=3,blue=2) + actual = hat.contents + expected = ["red","red","red","blue","blue"] + self.assertEqual(actual, expected, 'Expected creation of hat object to add correct contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method in `hat` class should reduce number of items in contents. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw(self): + hat = probability_calculator.Hat(red=5,blue=2) + actual = hat.draw(2) + expected = ['blue', 'red'] + self.assertEqual(actual, expected, 'Expected hat draw to return two random items from hat contents.') + actual = len(hat.contents) + expected = 5 + self.assertEqual(actual, expected, 'Expected hat draw to reduce number of items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method should behave correctly when the number of balls to extract is bigger than the number of balls in the hat. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw_2(self): + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + actual = hat.draw(20) + expected = ['yellow', 'yellow', 'yellow', 'yellow', 'yellow', 'red', 'green', 'green', 'green', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'test'] + self.assertEqual(actual, expected, 'Expected hat draw to return all items from hat contents.') + actual = len(hat.contents) + expected = 0 + self.assertEqual(actual, expected, 'Expected hat draw to leave no items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `experiment` method should return a different probability. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_prob_experiment(self): + hat = probability_calculator.Hat(blue=3,red=2,green=6) + probability = probability_calculator.experiment(hat=hat, expected_balls={"blue":2,"green":1}, num_balls_drawn=4, num_experiments=1000) + actual = probability + expected = 0.272 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + probability = probability_calculator.experiment(hat=hat, expected_balls={"yellow":2,"blue":3,"test":1}, num_balls_drawn=20, num_experiments=100) + actual = probability + expected = 1.0 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +# --seed-- + +## --seed-contents-- + +```py +import copy +import random + +class Hat: + pass + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + pass +``` + +# --solutions-- + +```py +import copy +import random + +class Hat: + def __init__(self, **hat): + self.hat = hat + contents = [] + for i in hat: + for j in range(hat[i]): + contents.append(i) + self.contents = contents + + + def draw(self, number): + drawn = [] + if number >= len(self.contents): + drawn.extend(self.contents) + self.contents = [] + else: + for i in range(number): + drawn.append( + self.contents.pop(random.randrange(len(self.contents))) + ) + return drawn + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + expected_balls_list = [] + drawn_list = [] + success = 0 + for i in expected_balls: + for j in range(expected_balls[i]): + expected_balls_list.append(i) + for j in range(num_experiments): + hat_copy = copy.deepcopy(hat) + drawn_list.append(hat_copy.draw(num_balls_drawn)) + exp_ball_list_copy = expected_balls_list[:] + for k in range(len(drawn_list[j])): + try: + ind = exp_ball_list_copy.index(drawn_list[j][k]) + exp_ball_list_copy.pop(ind) + except: + continue + if len(exp_ball_list_copy) == 0: + success += 1 + probability = success/num_experiments + return probability +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md new file mode 100644 index 00000000000..05e60f0b74a --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md @@ -0,0 +1,582 @@ +--- +id: 5e444136903586ffb414c94d +title: Build a Time Calculator Project +challengeType: 23 +forumTopicId: 462360 +dashedName: build-a-time-calculator-project +--- + +# --description-- + +Write a function named `add_time` that takes in two required parameters and one optional parameter: + +- a start time in the 12-hour clock format (ending in AM or PM) +- a duration time that indicates the number of hours and minutes +- (optional) a starting day of the week, case insensitive + +The function should add the duration time to the start time and return the result. + +If the result will be the next day, it should show `(next day)` after the time. If the result will be more than one day later, it should show `(n days later)` after the time, where "n" is the number of days later. + +If the function is given the optional starting day of the week parameter, then the output should display the day of the week of the result. The day of the week in the output should appear after the time and before the number of days later. + +Below are some examples of different cases the function should handle. Pay close attention to the spacing and punctuation of the results. + +```py +add_time('3:00 PM', '3:10') +# Returns: 6:10 PM + +add_time('11:30 AM', '2:32', 'Monday') +# Returns: 2:02 PM, Monday + +add_time('11:43 AM', '00:20') +# Returns: 12:03 PM + +add_time('10:10 PM', '3:30') +# Returns: 1:40 AM (next day) + +add_time('11:43 PM', '24:20', 'tueSday') +# Returns: 12:03 AM, Thursday (2 days later) + +add_time('6:30 PM', '205:12') +# Returns: 7:42 AM (9 days later) +``` + +Do not import any Python libraries. Assume that the start times are valid times. The minutes in the duration time will be a whole number less than 60, but the hour can be any whole number. + +# --hints-- +Calling `add_time('3:30 PM', '2:12')` should return `'5:42 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +import time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period(self): + actual = time_calculator.add_time("3:30 PM", "2:12") + expected = "5:42 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12" to return "5:42 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:55 AM', '3:12')` should return `'3:07 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_different_period(self): + actual = time_calculator.add_time("11:55 AM", "3:12") + expected = "3:07 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:55 AM", "3:12" to return "3:07 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected time to end with `'(next day)'` when it is the next day. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_next_day(self): + actual = time_calculator.add_time("9:15 PM", "5:30") + expected = "2:45 AM (next day)" + self.assertEqual(actual, expected, 'Expected time to end with "(next day)" when it is the next day.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected period to change from `AM` to `PM` at `12:00`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_period_change_at_twelve(self): + actual = time_calculator.add_time("11:40 AM", "0:25") + expected = "12:05 PM" + self.assertEqual(actual, expected, 'Expected period to change from AM to PM at 12:00') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00')` should return `'2:59 AM (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four(self): + actual = time_calculator.add_time("2:59 AM", "24:00") + expected = "2:59 AM (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00" to return "2:59 AM (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05')` should return `'12:04 AM (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later(self): + actual = time_calculator.add_time("11:59 PM", "24:05") + expected = "12:04 AM (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05" to return "12:04 AM (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02')` should return `'6:18 AM (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration(self): + actual = time_calculator.add_time("8:16 PM", "466:02") + expected = "6:18 AM (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02" to return "6:18 AM (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected adding `0:00` to return the initial time. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_no_change(self): + actual = time_calculator.add_time("5:01 AM", "0:00") + expected = "5:01 AM" + self.assertEqual(actual, expected, 'Expected adding 0:00 to return initial time.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('3:30 PM', '2:12', 'Monday')`should return `'5:42 PM, Monday'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period_with_day(self): + actual = time_calculator.add_time("3:30 PM", "2:12", "Monday") + expected = "5:42 PM, Monday" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12", "Monday" to return "5:42 PM, Monday"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00', 'saturDay')` should return `'2:59 AM, Sunday (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four_with_day(self): + actual = time_calculator.add_time("2:59 AM", "24:00", "saturDay") + expected = "2:59 AM, Sunday (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00", "saturDay" to return "2:59 AM, Sunday (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05', 'Wednesday')` should return `'12:04 AM, Friday (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later_with_day(self): + actual = time_calculator.add_time("11:59 PM", "24:05", "Wednesday") + expected = "12:04 AM, Friday (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05", "Wednesday" to return "12:04 AM, Friday (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02', 'tuesday')`should return `'6:18 AM, Monday (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration_with_day(self): + actual = time_calculator.add_time("8:16 PM", "466:02", "tuesday") + expected = "6:18 AM, Monday (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02", "tuesday" to return "6:18 AM, Monday (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def add_time(start, duration): + + + + + + return new_time +``` + +# --solutions-- + +```py +def add_time(start, duration, day=''): + start_arr = start[0:-3].split(':') + dur_arr = duration.split(':') + tail = '' + # converting to 24h format + if 'AM' in start: + if start_arr[0] == '12': + start_arr[0] = '00' + elif 'PM' in start: + if start_arr[0] == '12': + start_arr[0] = '12' + else: + start_arr[0] = f'{int(start_arr[0]) + 12}' + + # adding minutes + sum_m = int(start_arr[1]) + int(dur_arr[1]) + if sum_m > 59: + + if (sum_m - 60 * (sum_m//60)) < 10: + mins = f'0{(sum_m - 60 * (sum_m//60))}' + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + + else: + mins = sum_m - 60 * (sum_m//60) + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + else: + if sum_m < 10: + mins = f'0{sum_m}' + else: + mins = sum_m + + #adding hours + sum_h = int(start_arr[0]) + int(dur_arr[0]) + if sum_h < 24: + hours= sum_h + #time_24 = f'{hours}:{mins}' + else: + days_after = sum_h//24 + if days_after == 1: + hours = sum_h - 24 + tail = ' (next day)' + else: + hours = sum_h - 24 * days_after + tail = f' ({days_after} days later)' + + #converting back to AM/PM + if hours == 0: + hours = 12 + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + elif hours < 12: + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + else: + if hours > 12: + hours = hours - 12 + time = f'{hours}:{mins} PM' + final_time = f'{time}{tail}' + + #days of the week + week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] + if day: + day = day.capitalize() + if not tail: + final_time = f'{time}, {day}' + elif tail == ' (next day)': + index = week.index(day) + 1 + if index == 7: + index = 0 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + elif tail: + index = (week.index(day) + days_after) % 7 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + + + print('\n') + print(final_time) + print('\n') + return final_time + +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md new file mode 100644 index 00000000000..4f112fd73c5 --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md @@ -0,0 +1,248 @@ +--- +id: 5e44412c903586ffb414c94c +title: Build an Arithmetic Formatter Project +challengeType: 23 +forumTopicId: 462359 +dashedName: build-an-arithmetic-formatter-project +--- + +# --description-- + +Students in primary school often arrange arithmetic problems vertically to make them easier to solve. For example, "235 + 52" becomes: + +```py + 235 ++ 52 +----- +``` + +Finish the `arithmetic_arranger` function that receives a list of strings which are arithmetic problems, and returns the problems arranged vertically and side-by-side. The function should optionally take a second argument. When the second argument is set to `True`, the answers should be displayed. + +## Example + +Function Call: + +```py +arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"]) +``` + +Output: + +```py + 32 3801 45 123 ++ 698 - 2 + 43 + 49 +----- ------ ---- ----- +``` + +Function Call: + +```py +arithmetic_arranger(["32 + 8", "1 - 3801", "9999 + 9999", "523 - 49"], True) +``` + +Output: + +```py + 32 1 9999 523 ++ 8 - 3801 + 9999 - 49 +---- ------ ------ ----- + 40 -3800 19998 474 +``` + +## Rules + +The function will return the correct conversion if the supplied problems are properly formatted, otherwise, it will **return** a **string** that describes an error that is meaningful to the user. + +- Situations that will return an error: + - If there are **too many problems** supplied to the function. The limit is **five**, anything more will return: `'Error: Too many problems.'` + - The appropriate operators the function will accept are **addition** and **subtraction**. Multiplication and division will return an error. Other operators not mentioned in this bullet point will not need to be tested. The error returned will be: `"Error: Operator must be '+' or '-'."` + - Each number (operand) should only contain digits. Otherwise, the function will return: `'Error: Numbers must only contain digits.'` + - Each operand (aka number on each side of the operator) has a max of four digits in width. Otherwise, the error string returned will be: `'Error: Numbers cannot be more than four digits.'` +- If the user supplied the correct format of problems, the conversion you return will follow these rules: + - There should be a single space between the operator and the longest of the two operands, the operator will be on the same line as the second operand, both operands will be in the same order as provided (the first will be the top one and the second will be the bottom). + - Numbers should be right-aligned. + - There should be four spaces between each problem. + - There should be dashes at the bottom of each problem. The dashes should run along the entire length of each problem individually. (The example above shows what this should look like.) + +# --hints-- + +`arithmetic_arranger(["3801 - 2", "123 + 49"])` should return `3801 123\n- 2 + 49\n------ -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3801 - 2", "123 + 49"]), ' 3801 123\\n- 2 + 49\\n------ -----')`); + } +}) +``` + +`arithmetic_arranger(["1 + 2", "1 - 9380"])` should return `1 1\n+ 2 - 9380\n--- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["1 + 2", "1 - 9380"]), ' 1 1\\n+ 2 - 9380\\n--- ------')`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `3 3801 45 123\n+ 855 - 2 + 43 + 49\n----- ------ ---- -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]), ' 3 3801 45 123\\n+ 855 - 2 + 43 + 49\\n----- ------ ---- -----')`); + } +}) +``` + +`arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"])` should return `11 3801 1 123 1\n+ 4 - 2999 + 2 + 49 - 9380\n---- ------ --- ----- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"]), ' 11 3801 1 123 1\\n+ 4 - 2999 + 2 + 49 - 9380\\n---- ------ --- ----- ------')`); + } +}) +``` + +`arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"])` should return `'Error: Too many problems.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"]), 'Error: Too many problems.')`); + } +}) +``` + +`arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `"Error: Operator must be '+' or '-'."`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Operator must be '+' or '-'.")`); + } +}) +``` + +`arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers cannot be more than four digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers cannot be more than four digits.")`); + } +}) +``` + +`arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers must only contain digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers must only contain digits.")`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "988 + 40"], True)` should return `3 988\n+ 855 + 40\n----- -----\n 858 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "988 + 40"], True), " 3 988\\n+ 855 + 40\\n----- -----\\n 858 1028")`); + } +}) +``` + +`arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True)` should return `32 1 45 123 988\n- 698 - 3801 + 43 + 49 + 40\n----- ------ ---- ----- -----\n -666 -3800 88 172 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True), " 32 1 45 123 988\\n- 698 - 3801 + 43 + 49 + 40\\n----- ------ ---- ----- -----\\n -666 -3800 88 172 1028")`); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def arithmetic_arranger(problems, show_answers=False): + + return problems + +print(f'\n{arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"])}') +``` + +# --solutions-- + +```py +def arithmetic_arranger(problems, result=False): + + lin1 = "" + lin2 = "" + lin3 = "" + lin4 = "" + + if len(problems) > 5: + return 'Error: Too many problems.' + for problem in problems: + [num1, sym, num2] = problem.split() + sign = ['+', '-'] + if sym not in sign: + return ("Error: Operator must be '+' or '-'.") + if len(num1) > 4 or len(num2) > 4: + return ("Error: Numbers cannot be more than four digits.") + if not num1.isnumeric() or not num2.isnumeric(): + return ("Error: Numbers must only contain digits.") + + lin1 += " " + num1 + " " if len(num1) >= len( + num2) else " " * (len(num2) + 2 - len(num1)) + num1 + " " + lin2 += sym + " " + num2 + " " if len(num2) >= len( + num1) else sym + " " * (len(num1) - len(num2) + 1) + num2 + " " + nmax = (len(num1) + 2) if len(num1) >= len(num2) else (len(num2) + 2) + lin3 += "-" * nmax + " " + op = int(num1) + int(num2) if sym == "+" else int(num1) - int(num2) + lin4 += (" " * (nmax - len(str(op)))) + str(op) + " " + + arranged_problems = lin1.rstrip() + "\n" + lin2.rstrip( + ) + "\n" + lin3.rstrip() + if result: + arranged_problems += "\n" + lin4.rstrip() + + return arranged_problems +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md index 8bacd087a99..70a2bb926b5 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md @@ -23,7 +23,7 @@ Add a new key-value pair to your dictionary. Use the string `species` as the key You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 1 `)) }) @@ -32,7 +32,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have a `species` key with the value `guinea pig` inside your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig"} `)) }) diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md index ed2224c27c4..4d076a36f78 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md @@ -14,7 +14,7 @@ Now, replace the existent keys with the strings `A` and `B` — one for each nod Your dictionary should have an `A` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "A" in my_graph `)) }) @@ -23,7 +23,7 @@ Your dictionary should have an `A` key. Your `A` key should have `B` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -32,7 +32,7 @@ Your `A` key should have `B` as the value. Your dictionary should have an `B` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "B" in my_graph `)) }) @@ -41,7 +41,7 @@ Your dictionary should have an `B` key. Your `B` key should have `A` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["B"] == "A" `)) }) @@ -50,7 +50,7 @@ Your `B` key should have `A` as the value. Your dictionary should have two keys. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph) == 2 `)) }) diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md index 0cc2735311d..e834cd69809 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md @@ -16,7 +16,7 @@ Modify your existing dictionary to represent this arrangement. Use a list to rep Your dictionary should have 3 keys — `A`, `B`, and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C"] len(my_graph) == 3 and all(key in my_graph for key in key_list) `)) @@ -26,7 +26,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["A"]` should have the `B` node as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -35,7 +35,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -44,7 +44,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. The value of `my_graph["B"]` should be a list containing the other two nodes. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -53,7 +53,7 @@ The value of `my_graph["B"]` should be a list containing the other two nodes. The value of `my_graph["C"]` should be the connected node. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["C"] == "B" `)) }) diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md index caf7ddf7bb1..c17b2b195ae 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md @@ -14,7 +14,7 @@ Add one last node, `D`, which is connected with `A` and `C`. Modify your diction Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -24,7 +24,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list `)) }) @@ -33,7 +33,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["A"]) == 2 and "B" in my_graph["A"] and "D" in my_graph["A"] `)) }) @@ -42,7 +42,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -51,7 +51,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -60,7 +60,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list `)) }) @@ -69,7 +69,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["C"]) == 2 and "B" in my_graph["C"] and "D" in my_graph["C"] `)) }) @@ -78,7 +78,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list `)) }) @@ -87,7 +87,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["D"]) == 2 and "A" in my_graph["D"] and "C" in my_graph["D"] `)) }) diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md index 8754b7024f7..859546066c9 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md @@ -27,7 +27,7 @@ Modify `my_graph["A"]` into a list of tuples, considering the following distance Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -37,7 +37,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list and all(type(i) is tuple for i in my_graph["A"]) `)) }) @@ -46,7 +46,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 3), ("D", 1)] len(my_graph["A"]) == 2 and all(t in my_graph["A"] for t in tuples) `)) diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md index 3361957cd95..6c75bbcc51c 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md @@ -16,7 +16,7 @@ Declare an empty function called `shortest_path` and don't forget the `pass` key You should have a `shortest_path` function. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect inspect.isfunction(shortest_path) `)) diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md index 4c1a58fe3b2..0c1c58f073f 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md @@ -16,7 +16,7 @@ For that your function needs two parameters: `graph`, and `start`. Add them to y Your function should accept `graph` and `start` as the parameters, in this order. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == '(graph, start)' diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md index 12d70e80d84..b0afaea910c 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md @@ -22,7 +22,7 @@ Your function should take three parameters:`graph`, `start`, and `target`. The o The `target` parameter should have the default value of an empty string. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == "(graph, start, target='')" diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md index 12e3a4c19e4..a1ac39dbc37 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md @@ -14,7 +14,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list and all(type(i) is tuple for i in my_graph["B"]) `)) }) @@ -23,7 +23,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 3), ("C", 4)] len(my_graph["B"]) == 2 and all(t in my_graph["B"] for t in tuples) `)) diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md index fe05410bcc0..ba43fcc67b2 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md @@ -14,7 +14,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list and all(type(i) is tuple for i in my_graph["C"]) `)) }) @@ -23,7 +23,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 4), ("D", 7)] len(my_graph["C"]) == 2 and all(t in my_graph["C"] for t in tuples) `)) @@ -33,7 +33,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list and all(type(i) is tuple for i in my_graph["D"]) `)) }) @@ -42,7 +42,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 1), ("C", 7)] len(my_graph["D"]) == 2 and all(t in my_graph["D"] for t in tuples) `)) diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md index 37b657ae364..ea0cee14f67 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md @@ -25,7 +25,7 @@ Now, you are going to test your function with another graph. Change `my_graph` i You should modify `my_graph` into the provided graph. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` g = { 'A': [('B', 5), ('C', 3), ('E', 11)], 'B': [('A', 5), ('C', 1), ('F', 2)], diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md index 9d22dc2f140..ba22acc9327 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md @@ -27,7 +27,7 @@ You should have a variable called `copper`. Your `copper` variable should have the value of an empty dictionary. Use a pair of curly braces for that. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {} `)) }) diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md index 1a3d4c0f348..19677cf49d7 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md @@ -16,7 +16,7 @@ Add another key `age` to your dictionary and give it the integer number `2` as v You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 2 `)) }) @@ -25,7 +25,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have an `age` key with the value `2` just after `'species': 'guinea pig'`, inside your `copper` dictionary. Don't forget the comma. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md index e8cc99a40e6..07ea9988513 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md @@ -25,7 +25,7 @@ After your dictionary, follow the example above to access the `species` key of ` You should not modify your dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md index 0e378571312..e77ddd04f25 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md @@ -24,7 +24,7 @@ You should rename your `copper` dictionary into `my_graph`. Your `my_graph` variable should be a dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph) is dict `)) }) diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md index 8b749d597d5..5491a98fb8d 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md @@ -16,7 +16,7 @@ Your `merge_sort` function should take a single parameter: `array`. ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('merge_sort'))) == '(array)' + str(inspect.signature(merge_sort)) == '(array)' `)) }) ``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md index f78cfd91762..21c748d229b 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md @@ -19,13 +19,9 @@ You should create an `if` statement to check if `len(array) <= 1`. Don't forget ```js ({ - test: () => { - const transformedCode = code.replace(/\r/g, ""); - const merge_sort = __helpers.python.getDef("\n" + transformedCode, "merge_sort"); - const { function_body } = merge_sort; - - assert.match(function_body, /if\s+len\(\s*array\s*\)\s*<=\s*1:\s*pass/); - } + test: () => assert(runPython(` + _Node(_code).find_function("merge_sort").find_ifs()[0].find_conditions()[0].is_equivalent("len(array) <= 1") + `)) }) ``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md index 6bd7991530e..db7b2bb7d34 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md @@ -22,13 +22,11 @@ Use the `pass` keyword in the body of the `if` statement. Your `if` statement should check if `__name__` has a value of `'__main__'` ```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:/); -``` - -You should have the `pass` keyword in the body of your `if` statement - -```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:\s*[^}]*\bpass\b/); +({ + test: () => assert(runPython(` + _Node(_code).find_ifs()[0].find_conditions()[0].is_equivalent("__name__ == '__main__'") + `)) +}) ``` # --seed-- diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md index 7c9ea759e42..287925c0221 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md @@ -25,7 +25,6 @@ Your `rods` variable should be an empty dictionary. ```js ({ test: () => assert(runPython(` - rods = __locals.get("rods") rods == {} `)) }) diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md index 40bdd65ed3e..04c0ddda097 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md @@ -19,8 +19,7 @@ You should use the `range()` function to assign a sequence of numbers to `rods[' ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - type(a['A']) is range + type(rods['A']) is range `)) }) ``` @@ -29,8 +28,7 @@ You should use the `range()` function to assign the sequence of numbers from `3` ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == range(3, 0, -1) + rods['A'] == range(3, 0, -1) `)) }) ``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md index f2dc85fbe02..7e24288aea8 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md @@ -17,8 +17,7 @@ You should pass your `range()` call to the `list()` function. ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == list(range(3, 0, -1)) + rods['A'] == list(range(3, 0, -1)) `)) }) ``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md index 0a0c2159539..65efab9f3e3 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md @@ -23,7 +23,7 @@ You should declare an empty function named `move`. Remember to use the `pass` ke ({ test: () => { assert(runPython(` import inspect - inspect.isfunction(__locals.get('move')) + inspect.isfunction(move) `)) } }) diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md index b0633ce81ad..30ac435fb81 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md @@ -23,9 +23,8 @@ The value of `number_of_moves` should be the expression to calculate the number ```js ({ test: () => { - assert(runPython(` - a = __locals.get('NUMBER_OF_DISKS') - __locals.get('number_of_moves') == 2**a -1 + assert(runPython(` + number_of_moves == 2**NUMBER_OF_DISKS -1 `)) } }) ``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md index 9f3289295a2..f68baef14d6 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md @@ -16,7 +16,7 @@ You should declare an empty function named `make_allowed_move`. Remember to use ```js ({ test: () => assert(runPython(` import inspect - inspect.isfunction(__locals.get('make_allowed_move')) + inspect.isfunction(make_allowed_move) `)) }) ``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md index 2208e11c0de..b348290b58c 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md @@ -16,7 +16,7 @@ Your `make_allowed_move()` function should have two parameters named `rod1` and ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('make_allowed_move'))) == '(rod1, rod2)' + str(inspect.signature(make_allowed_move)) == '(rod1, rod2)' `)) }) ``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md index 70558cf9794..d50a4968bf2 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md @@ -14,16 +14,14 @@ The `rods` dictionary will represent the three rods with their disks. Give it th Your `rods` dictionary should have an `'A'` key. ```js -({ test: () => assert(runPython(`'A' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'A' in rods`)) }) ``` `rods['A']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['A'] == [] + rods['A'] == [] `)) }) ``` @@ -31,16 +29,14 @@ Your `rods` dictionary should have an `'A'` key. Your `rods` dictionary should have a `'B'` key. ```js -({ test: () => assert(runPython(`'B' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'B' in rods`)) }) ``` `rods['B']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['B'] == [] + rods['B'] == [] `)) }) ``` @@ -48,16 +44,14 @@ Your `rods` dictionary should have a `'B'` key. Your `rods` dictionary should have a `'C'` key. ```js -({ test: () => assert(runPython(`'C' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'C' in rods`)) }) ``` `rods['C']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['C'] == [] + rods['C'] == [] `)) }) ``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md index eec447723f2..322aa683a9b 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md @@ -22,7 +22,7 @@ Your `move()` function should have `n`, `source`, `auxiliary`, and `target` as t ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('move'))) == '(n, source, auxiliary, target)' + str(inspect.signature(move)) == '(n, source, auxiliary, target)' `)) }) ``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md index 3eb7892e2f1..c33328a533c 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md @@ -17,9 +17,8 @@ You should reduce the indentation level of all the code after the `return` state ```js ({ test: () => assert(runPython(` - hanoi = __locals.get("move") a, b, c = [3, 2, 1], [], [] - hanoi(3, a, b, c) + move(3, a, b, c) a == [] and b == [] and c == [3, 2, 1] `)) }) diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md index 16e7b5b68ed..00efcbb8726 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md @@ -23,9 +23,8 @@ You should add `direction` as the third parameter of your function. ```js ({ test: () => assert(runPython(` - import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + import inspect + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction)' `)) }) diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md index 74562ae26a5..d19dc6dbe27 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md @@ -24,8 +24,7 @@ You should declare a new function called `encrypt`. Remember to use the `pass` k ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - inspect.isfunction(f) + inspect.isfunction(encrypt) `)) }) ``` @@ -35,8 +34,7 @@ Your `encrypt` function should take `message` and `key` as the parameters. The o ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - sig = inspect.signature(f) + sig = inspect.signature(encrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md index fa091717efb..b7357c63760 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md @@ -16,8 +16,7 @@ You should define a new function called `decrypt`. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - inspect.isfunction(f) + inspect.isfunction(decrypt) `)) }) ``` @@ -27,8 +26,7 @@ Your `decrypt` function should take `message` and `key` as the parameters. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - sig = inspect.signature(f) + sig = inspect.signature(decrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md index 19fcb7ee6a3..f719d77790e 100644 --- a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md @@ -23,8 +23,7 @@ The `direction` parameter of your `vigenere` function should have a default valu ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction=1)' `)) }) diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md new file mode 100644 index 00000000000..733f024fa29 --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md @@ -0,0 +1,39 @@ +--- +id: 65ef181dad3d96b14a21a03e +title: Step 1 +challengeType: 20 +dashedName: step-1 +--- + +# --description-- + +In this project, you will find the approximate square root of a given number using the bisection method. + +The bisection method is a technique for finding the roots of a real-valued function. It works by narrowing down an interval where the square root lies until it converges to a value within a specified tolerance. + +Begin by creating a function named `square_root_bisection`. Leave the parameters empty for now. + +# --hints-- + +You should define the function `square_root_bisection` with no parameters. + +```js +({ + test: () => { + assert(runPython(` + import inspect + inspect.isfunction(square_root_bisection) + `)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md new file mode 100644 index 00000000000..f5091e5a2c6 --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md @@ -0,0 +1,38 @@ +--- +id: 65ef190c6b51e9b5a5f7ed29 +title: Step 2 +challengeType: 20 +dashedName: step-2 +--- + +# --description-- + +Give the `square_root_bisection` method the following parameters: + +- `square_target`: The number for which you want to find the square root. +- `tolerance` (optional): The acceptable difference between the square of the approximate root value and the actual target value (default is `1e-7`). The tolerance `1e-7` implies that the solution will be accurate to within `0.0000001` of the true value and is a good default choice that balances accuracy and performance. +- `max_iterations` (optional): The maximum number of iterations to perform (default is `100`). If the method doesn't converge within this limit, you'll assume the solution is not found. + +# --hints-- + +Your function should have these parameters: `square_target`, `tolerance = 1e-7`, and `max_iterations = 100`. The order matters. + +```js +({ + test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").has_args("square_target, tolerance=1e-7, max_iterations=100")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py + +--fcc-editable-region-- +def square_root_bisection(): + pass +--fcc-editable-region-- + +``` + diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md new file mode 100644 index 00000000000..77628582774 --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md @@ -0,0 +1,46 @@ +--- +id: 65ef19425d1b27b6c930bae6 +title: Step 3 +challengeType: 20 +dashedName: step-3 +--- + +# --description-- + +If the number for which you want to find the square root is negative, the code should raise an error as the square root of a negative number is not defined in real numbers. + +Remove the `pass` statement and create an `if` statement to check if `square_target` is less than `0`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").has_pass()`)) + } +}) +``` + +You should create an `if` statement to check if `square_target < 0`. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_if("square_target < 0").is_empty()`)) + + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance = 1e-7, max_iterations = 100): + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md new file mode 100644 index 00000000000..20f407dfd2a --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md @@ -0,0 +1,46 @@ +--- +id: 65ef198fde24dfb7ff675b42 +title: Step 4 +challengeType: 20 +dashedName: step-4 +--- + +# --description-- + +If the `square_target` is less than `0`, raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'`. Don't forget to remove the `pass` keyword. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'` inside the `if` body. + +```js +({ + test: () => { + + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].is_equivalent("raise ValueError('Square root of negative number is not defined in real numbers')")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md new file mode 100644 index 00000000000..f31f83a0ed3 --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md @@ -0,0 +1,38 @@ +--- +id: 65ef19ec318e2fb9066381e3 +title: Step 5 +challengeType: 20 +dashedName: step-5 +--- + +# --description-- + +You'll create separate cases for when `square_target` is `0` or `1`. + +Begin by creating an `if` statement to check if `square_target` is equal to `1`. + +# --hints-- + +You should create an `if` statement to check that `square_target == 1`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[0].is_equivalent("square_target == 1")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md new file mode 100644 index 00000000000..927a215705a --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md @@ -0,0 +1,51 @@ +--- +id: 65ef1a1fcb527bba0ca82ccf +title: Step 6 +challengeType: 20 +dashedName: step-6 +--- + +# --description-- + +If the `square_target` is equal to `1`, declare a variable `root` and assign it the value `1` . Also, print the message `'The square root of {square_target} is 1'`. Remember to format the message using an f-string. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should assign the value `1` to the `root` variable and print the message `'The square root of {square_target} is 1'` inside the `if` body. + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].is_equivalent("root = 1\\nprint(f'The square root of {square_target} is 1')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md new file mode 100644 index 00000000000..9ba5f5b573f --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md @@ -0,0 +1,55 @@ +--- +id: 65ef1a50049cf9bada13266f +title: Step 7 +challengeType: 20 +dashedName: step-7 +--- + +# --description-- + +Create an `elif` statement to check if `square_target` is equal to `0`. If it is, assign the value `0` to the `root` variable. Also, print the message `'The square root of {square_target} is 0'`. Remember to format the message using an f-string. + +# --hints-- + +You should have an `elif` statement to check the condition `square_target == 0`. + + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[1].is_equivalent("square_target == 0")`)); + } +}) + +``` + +You should assign the value `0` to the `root` variable and pass the argument `f'The square root of {square_target} is 0'` to a `print` call. + + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[1].is_equivalent("root = 0\\nprint(f'The square root of {square_target} is 0')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md new file mode 100644 index 00000000000..0fb10817783 --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md @@ -0,0 +1,45 @@ +--- +id: 65ef1a720d6e65bbb0d22463 +title: Step 8 +challengeType: 20 +dashedName: step-8 +--- + +# --description-- +Next, you are going to work on the cases where the `square_target` is a positive number apart from `1` or `0`. + +Create an `else` clause to handle these cases. + +# --hints-- + +Create an `else` clause and do not forget to add a `pass` keyword. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[2] == _Node()`)) + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md new file mode 100644 index 00000000000..8f10c9990f1 --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md @@ -0,0 +1,73 @@ +--- +id: 65ef1aacca094bbcc2e2a3c8 +title: Step 9 +challengeType: 20 +dashedName: step-9 +--- + +# --description-- + +In Python, the `max()` function returns the largest of the input values. + +```python +max(1, 2, 3) # Output: 3 +``` + +The variables `low` and `high` will be used to define the initial interval where the square root lies. + +Inside the `else` clause, initialize the `low` variable to `0` and the `high` variable to be the maximum of either `1` or `square_target` as the square root of a number is always less than or equal to the number itself. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].has_pass()`)) + } +}) +``` + +You should declare a variable `low` and assign it `0`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("low").is_equivalent("low = 0")`)); } +}) + +``` + +You should declare a variable `high` and use the `max()` function to assign it the maximum value between `1` and `square_target`. + +```js + +({ test: () => assert(runPython(` +node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("high") +values = ["high = max(1, square_target)", "high = max(square_target, 1)"] +any(node.is_equivalent(val) for val in values) +`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md new file mode 100644 index 00000000000..6711973a758 --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md @@ -0,0 +1,46 @@ +--- +id: 65ef1afca9a8f6be0d4150ba +title: Step 10 +challengeType: 20 +dashedName: step-10 +--- + +# --description-- + +Set the value of `root` to `None` as at this point, you don't have an approximate value yet. + +# --hints-- + +The value of `root` should be `None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].is_equivalent("low = 0\\nhigh = max(1, square_target)\\nroot = None")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + low = 0 + high = max(1, square_target) + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md new file mode 100644 index 00000000000..69406d9fee2 --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md @@ -0,0 +1,51 @@ +--- +id: 65ef1be2b958cabf712296cd +title: Step 11 +challengeType: 20 +dashedName: step-11 +--- + +# --description-- + +Now you'll repeatedly narrow down the interval by finding the midpoint of the current interval and comparing the square of the midpoint with the target value. + +For that, inside the `else` block, create a `for` loop that runs up to `max_iterations` times. + +# --hints-- + +You should create a `for` loop to iterate over `range(max_iterations)`. Use `_` as the loop variable. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].is_equivalent("for _ in range(max_iterations):\\n pass")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md new file mode 100644 index 00000000000..e5efb88bafc --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md @@ -0,0 +1,78 @@ +--- +id: 65ef1c0a03fcabc04ded7e69 +title: Step 12 +challengeType: 20 +dashedName: step-12 +--- + +# --description-- + +Inside the for loop, calculate the midpoint of the interval ranging from `low` to `high`. Assign this value to a variable `mid`. + +Also, calculate the square of the midpoint (`mid`) and store it in the variable `square_mid`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].has_pass()`)) + + } + +}) + +``` + +You should declare a variable `mid` and assign it `(low + high) / 2` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(` + node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("mid") + values = ["mid = (low + high) / 2", "mid = (high + low) / 2"] + any(node.is_equivalent(val) for val in values) + `)) + + } + +}) +``` + +You should declare a variable `square_mid` and assign it `mid**2` inside the body of the for loop. + +```js +({ test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("square_mid").is_equivalent("square_mid = mid**2")`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md new file mode 100644 index 00000000000..f365f00475d --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md @@ -0,0 +1,53 @@ +--- +id: 65ef1c34a541afc12dbb849d +title: Step 13 +challengeType: 20 +dashedName: step-13 +--- + +# --description-- + +The `abs()` function returns the absolute value of a number, which is always positive, regardless of the number sign. You will use it to check that the estimated square root is close enough to the actual value. + +Now, create an `if` statement to check if the absolute value of the difference between `square_mid` and `square_target` is within the specified `tolerance`. + +# --hints-- + +You should have an `if` statement with the condition `abs(square_mid - square_target) < tolerance:` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[0].is_equivalent("abs(square_mid - square_target) < tolerance")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md new file mode 100644 index 00000000000..7c84ec9d7fe --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md @@ -0,0 +1,68 @@ +--- +id: 65ef1cb031de30c2cde64c12 +title: Step 14 +challengeType: 20 +dashedName: step-14 +--- + +# --description-- + +If the difference is within the specified `tolerance`, set the value of `root` to `mid` and break out of the loop. + +# --hints-- + +You should remove the existing `pass` statement. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].has_pass()`)) + } + +}) + +``` + +You should assign the value of `mid` to `root` and break out of the loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].is_equivalent("root = mid\\nbreak")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md new file mode 100644 index 00000000000..18a6767deab --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md @@ -0,0 +1,71 @@ +--- +id: 65ef1cda150a59c3b8306944 +title: Step 15 +challengeType: 20 +dashedName: step-15 +--- + +# --description-- + +If the difference is not within the specified `tolerance`, create an `elif` statement to check if `square_mid` is less than `square_target`. + +Assign the value of `mid` to `low` as the square root would now lie between `low` and `mid`. + +# --hints-- + +You should create an `elif` statement that checks if `square_mid < square_target`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[1].is_equivalent("square_mid < square_target")`)) + + } + +}) +``` + +You should assign the value of `mid` to `low`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[1].is_equivalent("low = mid")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md new file mode 100644 index 00000000000..06598491f2e --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md @@ -0,0 +1,70 @@ +--- +id: 65ef1d104c2be9c4d8e22075 +title: Step 16 +challengeType: 20 +dashedName: step-16 +--- + +# --description-- + +If both the `if` and `elif` conditions are not met, the value of `mid` would be greater than `square_target`. In this case, create an `else` clause and assign the value of `mid` to `high`. + +# --hints-- + +You should have an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[2]== _Node()`)); + } +}) + +``` + +You should assign the value of `mid` to `high` in the `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[2].is_equivalent("high = mid")`)); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- + elif square_mid < square_target: + low = mid + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md new file mode 100644 index 00000000000..45e3e9987a8 --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md @@ -0,0 +1,76 @@ +--- +id: 65ef1d5e3d2927c5e0f4997b +title: Step 17 +challengeType: 20 +dashedName: step-17 +--- + +# --description-- + +Outside the for loop, create an `if` statement to check if the value of `root` is still `None`. If it is, print the message `'Failed to converge within {max_iterations} iterations.'`. Remember to format the message using an f-string. + +# --hints-- + +You should create an `if` statement that checks if `root is None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[0].is_equivalent("root is None")`)); + + } +}) +``` + +You should pass the argument `f'Failed to converge within {max_iterations} iterations.'` to the `print` function. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].is_equivalent("if root is None:\\n print(f'Failed to converge within {max_iterations} iterations.')")`)); + + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md new file mode 100644 index 00000000000..ffe75554dd8 --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md @@ -0,0 +1,77 @@ +--- +id: 65ef1d924ff2e5c7031c6ce8 +title: Step 18 +challengeType: 20 +dashedName: step-18 +--- + +# --description-- + +Create an `else` clause to handle the case where the value of `root` is not `None`, indicating that a root hass been found. If it is not `None`, print the message `'The square root of {square_target} is approximately {root}'`. Remember to format using an f-string. + +# --hints-- + +You should create an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[1] == _Node()`)); + } +}) + +``` + +You should print `f'The square root of {square_target} is approximately {root}'` within the `else` body. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_bodies()[1].is_equivalent("print(f'The square root of {square_target} is approximately {root}')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md new file mode 100644 index 00000000000..1a2bb01cf56 --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md @@ -0,0 +1,68 @@ +--- +id: 65ef1dd722f6e7c8294eeec4 +title: Step 19 +challengeType: 20 +dashedName: step-19 +--- + +# --description-- + +Finally, return the value of `root` from the `square_root_bisection` function. + +# --hints-- + +You should return `root` at the end of the function. + +```js +({ + test: () => + { + const pyClassStr = runPython(`str(_Node(_code).find_function("square_root_bisection"))`); + assert.match(pyClassStr, /return\s*root/) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md new file mode 100644 index 00000000000..7904b9bceab --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md @@ -0,0 +1,70 @@ +--- +id: 65ef1e10268f8ec9121446d1 +title: Step 20 +challengeType: 20 +dashedName: step-20 +--- + +# --description-- + +Outside the function definiton, create a variable `N` and assign the value of `16` to it. + +# --hints-- + +You should have the variable `N = 16` outside the function definition. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_variable("N").is_equivalent("N = 16")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md new file mode 100644 index 00000000000..71da1b62c03 --- /dev/null +++ b/curriculum/challenges/japanese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md @@ -0,0 +1,115 @@ +--- +id: 65ef1eac497754cafa12a26c +title: Step 21 +challengeType: 20 +dashedName: step-21 +--- + +# --description-- + +Call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +Experiment with larger values. + +With this, you have successfully implemented the bisection method to find the square root of a number. + +# --hints-- + +You should call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +```js +({ + test: () => assert(runPython(`_Node(_code).has_call("square_root_bisection(N)")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- +N = 16 + +--fcc-editable-region-- + +``` + +# --solutions-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +N = 16 +square_root_bisection(N) +``` diff --git a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md index 4dfa13beb4a..a83e902f4ae 100644 --- a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md +++ b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md @@ -7,7 +7,7 @@ dashedName: step-8 # --description-- -`cat-head` の要素が分かりやすいように、線形グラデーション (linear gradient) の背景色を追加しましょう。 `85%` 地点で `#5e5e5e`、`100%` 地点で `#45454f` にしてください。 +To see the `.cat-head` element, give it a linear gradient background with `#5e5e5e` at `85%` and `#45454f` at `100%`. 色の違いがわかりにくいかもしれませんが、よく見ると違います。 diff --git a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md index 0551de43322..432659948a7 100644 --- a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md +++ b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md @@ -11,7 +11,7 @@ dashedName: step-20 # --hints-- -You should not change the existing `div` element with the class `car-ears`. +You should not change the existing `div` element with the class `cat-ears`. ```js assert(document.querySelectorAll('div.cat-ears').length === 1); diff --git a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md index 8f91b5645c3..c8972728596 100644 --- a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md +++ b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md @@ -11,7 +11,7 @@ dashedName: step-15 `.cat-head` の `position` プロパティの値を `sticky` に変更し、`top` を `0` に設定して、`left` プロパティとその値は削除してください。 -**注**: `sticky` の効果を確認するには、 `.cat-head` に該当する `div` 要素の前後に、ある程度の長さのテキストを追加する必要があります。 その状態でページ下部へスクロールしていくと、`.cat-head` の要素が上端にくっ付いて残るのがわかります。 +**注**: `sticky` の効果を確認するには、 `.cat-head` に該当する `div` 要素の前後に、ある程度の長さのテキストを追加する必要があります。 If you scroll down after that, you'll see that the `.cat-head` gets stuck to the top and remains there. # --hints-- diff --git a/curriculum/challenges/japanese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md b/curriculum/challenges/japanese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md index 0f93285cb97..5f212983dbc 100644 --- a/curriculum/challenges/japanese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md +++ b/curriculum/challenges/japanese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md @@ -61,7 +61,7 @@ while (continueLoop) { --fcc-editable-region-- --fcc-editable-region-- -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/japanese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md b/curriculum/challenges/japanese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md index bf40abef119..3f935935d65 100644 --- a/curriculum/challenges/japanese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md +++ b/curriculum/challenges/japanese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md @@ -44,7 +44,7 @@ let done = 0; while (continueLoop) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/japanese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md b/curriculum/challenges/japanese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md index 9c976287a58..38f1716a030 100644 --- a/curriculum/challenges/japanese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md +++ b/curriculum/challenges/japanese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md @@ -48,7 +48,7 @@ let done = 0; while (done !== count) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/japanese/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md b/curriculum/challenges/japanese/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md index 020d23938c1..c9530607b95 100644 --- a/curriculum/challenges/japanese/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md +++ b/curriculum/challenges/japanese/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md @@ -23,15 +23,7 @@ Test value of `__name__` ```js ({ - test: () => assert(__pyodide.runPython(`__name__ == '__main__'`)) -}) -``` - -Test __locals and __pyodide - -```js -({ - test: () => assert(__pyodide.runPython(`__locals.get('add')(4,5) == 9`)) + test: () => assert(runPython(`__name__ == '__main__'`)) }) ``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md index d2139487de3..de4fa3e7ee3 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md @@ -1,6 +1,5 @@ --- id: 658111239f39a01c8f095c44 -videoId: nLDychdBwUg title: "Dialogue 1: What Motivates the Team?" challengeType: 21 dashedName: dialogue-1-what-motivates-the-team @@ -13,3 +12,275 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Maria", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.5, + "dialogue": { + "text": "Hey Maria, I have a question… Do you know what motivates the team?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 4.9, + "finishTime": 7.4, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 8.7, + "finishTime": 12.3, + "dialogue": { + "text": "Hi Brian! Well, one thing that really motivates me is learning new things.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 12.7, + "finishTime": 16, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 16.5, + "finishTime": 18.2, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 19.7, + "finishTime": 20.9, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 21.3, + "finishTime": 24.7, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 25, + "finishTime": 27.2, + "dialogue": { + "text": "But you know what demotivates me sometimes?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 27.7, + "finishTime": 32.6, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 33.1, + "finishTime": 37.3, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 37.7, + "finishTime": 39.7, + "dialogue": { + "text": "Well, collaborating with our creative team", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 39.7, + "finishTime": 42.5, + "dialogue": { + "text": "and brainstorming many ideas really inspires me.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 42.8, + "finishTime": 44.6, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 45.5, + "finishTime": 49, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 49.3, + "finishTime": 53.6, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 54, + "finishTime": 55.5, + "dialogue": { + "text": "It is really frustrating.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 56.5, + "finishTime": 58.4, + "dialogue": { + "text": "Yeah, technical glitches are complicated", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 58.4, + "finishTime": 61, + "dialogue": { + "text": "and there's not much we can do other than try to solve them.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 62, + "finishTime": 63.3, + "dialogue": { + "text": "But do you know what else is great?", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 63.7, + "finishTime": 66.7, + "dialogue": { + "text": "Seeing the team's enthusiasm after solving these issues.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 67.1, + "finishTime": 69.8, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 71.3, + "finishTime": 75.4, + "dialogue": { + "text": "Yeah. Wow. You know what? This was really a motivating talk.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 75.7, + "finishTime": 77.1, + "dialogue": { + "text": "Thanks for sharing your thoughts.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 77.7, + "finishTime": 79.8, + "dialogue": { + "text": "Anytime. It's good to have these discussions.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 80, + "finishTime": 81.6, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "right" + } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 82.1 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 82.6 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md index 5eb9cbab87f..bd40d89ce39 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-6 --- - + # --description-- @@ -18,7 +15,7 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ## --sentence-- -`Well, one thing that really motivates me is _ new things.` +`Hi, Brian. Well, one thing that really motivates me is _ new things.` ## --blanks-- @@ -27,3 +24,47 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ### --feedback-- This word is a gerund, the `-ing` form of the verb used as a noun, indicating the action or process of gaining knowledge. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md index 57d5a2b1a4d..279e2861a88 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-5 --- - + # --description-- @@ -20,7 +17,7 @@ When you add an `s` at the end of a word, like `things`, it means you are talkin ## --sentence-- -`Hi Brian! _, one _ that really motivates me _ learning new _.` +`Hi, Brian! _, one _ that really motivates me _ learning new _.` ## --blanks-- @@ -53,3 +50,47 @@ This is the verb `to be` conjugated in the third person singular. ### --feedback-- Maria uses this word to talk about more than one item or idea she likes to learn. It is the plural form of `thing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md index eee61930dcc..3ecb0ccb702 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-7 --- - + # --description-- @@ -51,3 +48,47 @@ learning new things ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md index 053ae896f0b..80d98bbbc33 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-8 --- - + # --description-- @@ -37,3 +34,47 @@ This word is a gerund describing the activity Maria enjoys related to discoverin ### --feedback-- Another gerund that follows `and`, indicating another activity Maria enjoys, which is about getting better at something. It also ends in `-ing` and serves as a noun. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 15.04 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.28, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.78 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md index fbe4dcc505d..cfa8469782b 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-10 --- - + # --description-- @@ -26,7 +23,7 @@ In `I love exploring many new technologies`, how is `exploring` used? ## --answers-- -As a present continuous +As a verb in the present continuous structure ### --feedback-- @@ -34,7 +31,7 @@ Present continuous are for actions happening now. This is not showing an action --- -As a simple present verb +As a verb in the simple present structure ### --feedback-- @@ -42,11 +39,11 @@ Simple present verbs don't end in `-ing`. --- -As a gerund +As a verb in the gerund form --- -As a past participle +As a verb in the past participle form ### --feedback-- @@ -55,3 +52,47 @@ Past participles are for perfect tenses or as adjectives. This is not used like ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 6.50, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills. It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 7.00 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md index 80690caccd2..252cf48c05b 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-18 --- - + # --description-- @@ -31,3 +28,47 @@ Adding a prefix to a word can change its meaning. ### --feedback-- Maria uses an adjective ending in `-ing` to describe a feeling that is the opposite of `motivating`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 32.22, + "finishTimestamp": 36.08 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.86, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.36 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md index 9001228085f..2ea50eff48d 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-11 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to the audio and complete the sentence. ### --feedback-- This word is used when someone listens to what another person says. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 19.86 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 2.68 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md index f00bebea879..042955730aa 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-12 --- - + # --description-- @@ -49,3 +46,47 @@ This word means to develop or become bigger or more advanced. It ends with `-ing ### --feedback-- This word is related to work or a career. It describes doing something in a way that shows good skills and behavior at a job. it ends with `-ly` + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 20.28, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md index 885332a3dfc..008035b84e7 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-13 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on how skill improvement fits into overall personal and professional dev ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.98, + "dialogue": { + "text": "That's great to hear, Maria. Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.48 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md index a99fd602832..e087041f3d9 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-14 --- - + # --description-- @@ -53,3 +50,65 @@ He's adding to the conversation, not changing the topic. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 26.26 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 2.60, + "finishTime": 5.64, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot,", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 6.02, + "finishTime": 8.58, + "dialogue": { + "text": "but you know what demotivates me sometimes?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 9.08 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md index 0bcef38811f..ed340f1a31c 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md @@ -28,4 +28,48 @@ Listen to the audio and complete the sentence. ### --feedback-- -This word means feeling very happy and eager. +This word means feeling very happy and eager. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 15.32, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.94, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.44 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md index b425e084763..cf6dcc31710 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-16 --- - + # --description-- @@ -55,3 +52,47 @@ This phrase means having plenty of time, which is different from what Brian mean ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md index b5708ac00fe..8de15f47d1c 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-17 --- - + # --description-- @@ -47,3 +44,47 @@ This word is a preposition used to compare or illustrate a similarity to somethi ### --feedback-- It means you are doing something quickly because you do not have much time. It ends with `-ing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md index 5293029060e..f74bac67a8c 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-20 --- + + # --description-- The word `brainstorming` refers to a group discussion to produce ideas and solve problems. @@ -46,3 +48,47 @@ It means adhering to specific instructions, which is not the same as the word. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md index ea82aef1538..1b4aea4a2b1 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-28 --- - + # --description-- @@ -18,7 +15,7 @@ The phrase `slow down` means to decrease in speed or reduce the rate of progress ## --sentence-- -`The problem is encountering many technical issues that make our progress _ _.` +`The problem is encountering many technical issues that _ our progress _.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to describe a decrease in speed or pace. ### --feedback-- This adverb complements the phrase to indicate a reduction or decrease in intensity, speed, or amount. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md index ed1c423927b..bd8c7fa6444 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-32 --- + + # --description-- The phrase `other than` indicates the presence of an alternative or different option. @@ -46,3 +48,47 @@ It means the singular or exclusive option, which is not the same as the phrase. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md index d2a4201ca63..9712d6a3279 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-35 --- - + # --description-- @@ -43,3 +40,47 @@ This possessive adjective is used to refer to something that belongs to the pers ### --feedback-- This noun refers to the reason or reasons one has for acting or behaving in a particular way. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 66.12, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 3.68, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.18 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md index 8f432d36f95..c5b54c0b913 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-38 --- - + # --description-- @@ -29,3 +26,47 @@ In the dialogue, Maria talks about the importance of discussions to help them re ### --feedback-- This verb is used to make someone think of something they might have forgotten. It brings something back into someone's mind. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 76.52, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.08, + "dialogue": { + "text": "Anytime. It's good to have these discussions. It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.58 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md index ba9e43efcb6..974459e9326 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-39 --- - + # --description-- @@ -43,3 +40,47 @@ This pronoun refers to the speaker and at least one other person, indicating a c ### --feedback-- This word is used in the context of continuing forward or persevering in a particular action or state. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 79.06, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.54, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.04 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md index 2f8c34f4dbf..c1b55b444af 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md @@ -1,6 +1,5 @@ --- id: 658160772584ba319849f910 -videoId: nLDychdBwUg title: "Dialogue 2: Asking How Someone Feels" challengeType: 21 dashedName: dialogue-2-asking-how-someone-feels @@ -13,3 +12,239 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Alice", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Tom", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Alice", + "startTime": 2, + "finishTime": 5.6, + "dialogue": { + "text": "Hi Tom, you look a bit down these days. Is everything okay?", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 6.3, + "finishTime": 9.5, + "dialogue": { + "text": "Hey Alice, yeah, I feel a bit demotivated.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 9.8, + "finishTime": 13.6, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 13.8, + "finishTime": 16.7, + "dialogue": { + "text": "It's exhausting, and it feels like I'm constantly running", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 16.7, + "finishTime": 18.1, + "dialogue": { + "text": "without knowing where I'm going.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 18.9, + "finishTime": 22.7, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 23.4, + "finishTime": 25.7, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 26.2, + "finishTime": 28.8, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 28.8, + "finishTime": 30.6, + "dialogue": { + "text": "instead of working together as a team.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 31.3, + "finishTime": 34.7, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 35, + "finishTime": 38.4, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 38.9, + "finishTime": 41.7, + "dialogue": { + "text": "Sometimes, it feels like we're meeting for no reason,", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 41.7, + "finishTime": 44.3, + "dialogue": { + "text": "and it's hard to find time to actually work on projects.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 45, + "finishTime": 48.4, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 49, + "finishTime": 52.6, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 52.6, + "finishTime": 56.6, + "dialogue": { + "text": "without any variation. It feels like I'm wasting my skills and creativity.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 57.06, + "finishTime": 59, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 59.6, + "finishTime": 62.8, + "dialogue": { + "text": "Repeating the same tasks over and over can be demotivating.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 63.2, + "finishTime": 66.4, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 66.8, + "finishTime": 69.4, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation,", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 69.4, + "finishTime": 71.3, + "dialogue": { + "text": "and it's good to share and support each other.", + "align": "left" + } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 71.8 + }, + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 72.3 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md index b8674840c93..9a3003405af 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-40 --- - + # --description-- @@ -22,7 +19,7 @@ In this conversation, Alice notices something about Tom's mood and asks if he's ## --sentence-- -`Hi Tom, you look a bit _ _ days. Is everything okay?` +`Hi, Tom. You look a bit _ _ days. Is everything okay?` ## --blanks-- @@ -39,3 +36,47 @@ This word is used to describe feeling sad or unhappy. It's like when you're not ### --feedback-- This word is used with `days` to talk about the current time or the recent period. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 0.98, + "finishTimestamp": 4.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.60, + "dialogue": { + "text": "Hi, Tom. You look a bit down these days. Is everything okay?", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.10 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md index 8fe09a43d89..fdd78d7f84d 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-41 --- - + # --description-- @@ -20,7 +17,7 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ## --sentence-- -`Hey Alice, yeah, I feel a bit _.` +`Hey, Alice. Yeah, I feel a bit _.` ## --blanks-- @@ -29,3 +26,47 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ### --feedback-- This word is used to describe how Tom feels. It ends with `ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 8.48 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md index a8f6062add9..e30ea2d793a 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-42 --- - + # --description-- @@ -46,8 +43,52 @@ This word means `lacking` or `not having` something. --- -`break` +`breaks` ### --feedback-- -This word refers to a short period of rest or pause from work or activity. +This word refers to a short period of rest or pause from work or activity. Use the plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 8.84, + "finishTimestamp": 12.60 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.76, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.26 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md index 90185d888a6..b19719a1211 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-43 --- - + # --description-- @@ -45,3 +42,47 @@ This word means something is happening all the time or very often. ### --feedback-- This word is used to indicate the absence of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 12.82, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 5.30, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.80 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md index b6f27b9c9b9..524c4be5635 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-44 --- - + # --description-- @@ -18,7 +15,7 @@ Tom talks about what's making him feel demotivated. Let's figure out what is bot ## --text-- -What is making Tom feel demotivated and why? +What is making Tom feel demotivated? ## --answers-- @@ -51,3 +48,65 @@ Reflect on Tom's words about his work routine and how it makes him feel. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.54, + "finishTime": 8.3, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 8.52, + "finishTime": 12.82, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 13.32 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md index 23f853581be..b084d8c5f2d 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-45 --- - + # --description-- @@ -51,3 +48,47 @@ She understands how Tom feels ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 18.98 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 2.28, + "dialogue": { + "text": "I totally get that, Tom.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 2.78 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md index 95b626db8ab..18b3ede5a71 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-46 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working more hours than what is normally required, often beyond ### --feedback-- This word describes something that makes you feel very tired, like it's taking all your energy away. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 21.72 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.02, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.52 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md index 8e581dc301d..143b260cab0 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-47 --- - + # --description-- @@ -35,3 +32,47 @@ This word means managing or handling, especially when the situation is challengi ### --feedback-- This word, in the context of the office, refers to the social and power dynamics among coworkers and within the workplace environment. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 24.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.52, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.02 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md index ffd2e2364d2..5c132f9bd9c 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-48 --- - + # --description-- @@ -45,3 +42,47 @@ This word means making an effort to do something, often something challenging. ### --feedback-- This word is about doing tasks, especially with others to achieve a common goal or finish a project. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 25.02, + "finishTimestamp": 29.38 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.36, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.86 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md index eed7315d9fd..1c59d0c36f8 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-49 --- - + # --description-- @@ -51,3 +48,65 @@ Reflect on the specific aspect of work that Alice mentions she hates dealing wit ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 29.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.9, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 5.64, + "finishTime": 7.96, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 8.4, + "finishTime": 12.88, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 13.38 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md index 008029728ad..89639635494 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-50 --- - + # --description-- @@ -22,11 +19,11 @@ Tom is agreeing with Alice about a specific aspect of work that they find unplea ## --blanks-- -`dealing` +`Dealing` ### --feedback-- -This word means managing or handling something, often implying that it's not an easy or enjoyable task. +This word means managing or handling something, often implying that it's not an easy or enjoyable task. Don't forget the capitalization. --- @@ -35,3 +32,47 @@ This word means managing or handling something, often implying that it's not an ### --feedback-- In the context of an office, this word refers to the social and power dynamics among coworkers. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 30.08, + "finishTimestamp": 33.46 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md index 33c828a005d..eb1ae62b875 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-51 --- - + # --description-- @@ -45,3 +42,47 @@ This word is part of a expression that means something is making Tom upset or an ### --feedback-- This word is used when you're talking about experiencing something, like when you have a lot of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md index f182b582c7f..9e516b17b69 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-52 --- - + # --description-- @@ -51,3 +48,47 @@ He wishes for even more meetings ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md index 43b8ae258c9..f457d5cb4c2 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-53 --- - + # --description-- -Listen to the audio and answer the question. +Listen to the audio and fill in the blanks. # --fillInTheBlank-- @@ -51,3 +48,47 @@ This word means to discover or locate something. It's often used when you're loo ### --feedback-- This word is used to emphasize what is really true or happening. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md index e12e17d47ff..a0c2ef0d79a 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-54 --- - + # --description-- @@ -51,3 +48,47 @@ They take away time from working on projects ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md index 2bd6b036fb7..97dde90f3cb 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-55 --- - + # --description-- @@ -24,7 +21,7 @@ Alice: I hear you, Tom. Sitting in meetings for hours can be discouraging. ## --sentence-- -`_ in meetings for hours can be _.` +`I hear you, Tom. _ in meetings for hours can be _.` ## --blanks-- @@ -41,3 +38,47 @@ This word describes the action of being seated. It is capitalized. ### --feedback-- This word means something that makes you feel less confident or willing to continue. It ends in `ing`, showing it's describing the effect of the action. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md index da3c221a1f1..30aeb3ff460 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md @@ -5,12 +5,7 @@ challengeType: 19 dashedName: task-56 --- - + # --description-- @@ -53,3 +48,47 @@ Consider what Alice means by `discouraging` in the context of meetings. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md index c60324ba8d3..2957a5033ab 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-57 --- - + # --description-- @@ -43,3 +40,47 @@ This word is used to describe a large number of things grouped together. It's li ### --feedback-- This word refers to having different types or changes in something. It's the opposite of doing the same thing over and over. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 52.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 6.02, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.52 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md index 63d0a5a5643..cf49c33b69a 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-58 --- - + # --description-- @@ -35,3 +32,47 @@ This word means not using something valuable in a good or effective way. It's li ### --feedback-- This word refers to the ability to make new things or think of new ideas. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 53.24, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.34, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 3.84 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md index 540a3a77c0f..e189fc50af5 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-59 --- - + # --description-- @@ -51,3 +48,56 @@ Consider what Alice says directly annoys her versus how she feels about another ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md index ef09e4af19b..a5f87b483bd 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-60 --- - + # --description-- @@ -51,3 +48,56 @@ Think about whether meetings are mentioned in the context of wasting skills and ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md index fa7b1328561..7f182561d7f 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-61 --- - + # --description-- @@ -39,3 +36,47 @@ This auxiliary verb is used here to emphasize the verb that follows it, making t ### --feedback-- This adjective describes feelings of annoyance or irritation, often because of obstacles or difficulties. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 58.00 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.14, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 3.64 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md index e2e6ee3f118..d0f7a57efaa 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-62 --- - + # --description-- @@ -55,3 +52,47 @@ This word, when used twice with `and` in between, emphasizes the repetition of a ### --feedback-- This word describes something that reduces your desire or willingness to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 61.78 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "That does sound frustrating, Alice. Repeating the same tasks over and over can be demotivating.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md index 27d721f5a0a..bef09034af7 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-63 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to describe an emotional experience or sensation, in this case ### --feedback-- This word is the plural of `this`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md index 1721b02d9e4..c2eefbb7b7d 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-65 --- - + # --description-- @@ -51,3 +48,47 @@ For listening to him ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md index 80ad6cb9859..dc1a51e3b48 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-66 --- - + # --description-- @@ -51,3 +48,47 @@ This word means to tell others about your own experiences, thoughts, or feelings ### --feedback-- This word involves giving help or encouragement, showing you are there for someone. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md index 88359a9631c..ae0f2da0a0d 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-67 --- - + # --description-- @@ -51,3 +48,47 @@ The value of sharing feelings and supporting one another ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md index 01535bb27f7..e34ef923278 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-64 --- - + # --description-- @@ -44,3 +41,46 @@ This word is the middle part of the phrase used to casually introduce new inform This word completes the phrase, indicating a casual addition or shift in the conversation. +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md index abd512abbb8..fb7e5ccda2d 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md @@ -1,6 +1,5 @@ --- id: 65a351bd69b0b72d7ed24eb5 -videoId: nLDychdBwUg title: "Dialogue 3: Talking About Motivations to Pursue a Career" challengeType: 21 dashedName: dialogue-3-talking-about-motivations-to-pursue-a-career @@ -13,3 +12,212 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Lisa", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5, + "dialogue": { + "text": "Hey Lisa, what motivated you to choose a career in tech?", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 6, + "finishTime": 8.5, + "dialogue": { + "text": "One of my main motivations was the financial stability", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 8.8, + "finishTime": 10, + "dialogue": { + "text": "that tech jobs can provide.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 10.4, + "finishTime": 12.8, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 13.3, + "finishTime": 16.3, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 17.4, + "finishTime": 19.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 19.8, + "finishTime": 24, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 24, + "finishTime": 26, + "dialogue": { + "text": "and have different perspectives.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 26.8, + "finishTime": 29.2, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 29.2, + "finishTime": 32.1, + "dialogue": { + "text": "Another thing was the chance to be part of projects", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 32.1, + "finishTime": 34.2, + "dialogue": { + "text": "that push the limits of innovation and creativity.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 34.9, + "finishTime": 36, + "dialogue": { + "text": "I'm with you on that one.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 36.1, + "finishTime": 39.6, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 39.7, + "finishTime": 43.1, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 44.3, + "finishTime": 47.3, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 47.3, + "finishTime": 49.6, + "dialogue": { + "text": "and finding practical solutions is really thrilling.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 50.3, + "finishTime": 53, + "dialogue": { + "text": "Knowing that we solved problems is really exciting, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 53.4, + "finishTime": 56.7, + "dialogue": { + "text": "I hope we keep getting as much motivation from it as we can.", + "align": "left" + } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.2 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.7 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md index e165f760c08..23c160c642f 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-68 --- - + # --description-- @@ -18,7 +15,7 @@ Brian: Hey Lisa, what motivated you to choose a career in tech? ## --sentence-- -`Hey Lisa, what _ you to _ a career in tech?` +`Hey, Lisa, what _ you to _ a career in tech?` ## --blanks-- @@ -34,4 +31,48 @@ This word means something gave you a reason or desire to do something. It ends w ### --feedback-- -This verb is about making a decision between different options. +This verb is about making a decision between different options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md index 94e4ccd2b3e..3a96b95c93a 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-69 --- - + # --description-- @@ -51,3 +48,47 @@ What motivated her to pick a tech career ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md index 47d7700e414..9dc5f7bc32d 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-70 --- - + # --description-- @@ -37,3 +34,47 @@ The most important. ### --feedback-- Being steady, meaning you don't have to worry too much about it. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md index afed572b3be..22a27d6cb43 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-71 --- - + # --description-- @@ -35,3 +32,47 @@ This word is a past tense verb used to describe a state or condition in the past ### --feedback-- This verb means to give or supply something needed, like help, information, or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md index a5031402575..f006bbf44d1 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-72 --- - + # --description-- @@ -52,3 +48,71 @@ Reflect on Lisa's statement and whether travel is mentioned as a motivation. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.50 + }, + { + "character": "Lisa", + "opacity": 1, + "startTime": 5.50 + }, + { + "character": "Lisa", + "startTime": 5.82, + "finishTime": 10.02, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md index e71f55301a3..4b20a9bd448 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-73 --- - + # --description-- @@ -37,3 +34,47 @@ This verb means giving permission or making it possible to do something. this ve ### --feedback-- This noun describes the feeling of being certain about your abilities or something you're going to do. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 9.48, + "finishTimestamp": 11.90 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.42, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 3.92 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md index 4f8c68dfebb..ca8b0a42958 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-74 --- - + # --description-- @@ -39,3 +36,47 @@ This word refers to different areas of work or study. It's plural here because s ### --feedback-- This verb is used to talk about successfully reaching a goal, especially after putting in effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 12.16, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md index d0951b06bde..84aca093d52 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-75 --- - + # --description-- @@ -51,3 +48,65 @@ Lisa doesn't mention working less. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md index 1e5b8911585..9bd217faa04 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-76 --- - + # --description-- The words `much` and `many` are used to talk about quantity. @@ -52,3 +49,65 @@ Reflect on Lisa's statement about what makes tech jobs stand out for her. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md index 38a5ed3758e..013e56a7705 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-77 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to Brian's response to Lisa and fill in the missing word that shows he st ### --feedback-- This adverb is used to emphasize the truth or importance of a statement, showing strong agreement or belief. it ends with `ly`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 18.38 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.40, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.90 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md index 620135fd503..145afc143d8 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-78 --- - + # --description-- @@ -51,3 +48,47 @@ This word is used to describe different areas of study or work. This word is in ### --feedback-- These are different ways of viewing or thinking about something. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 18.80, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.20, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.70 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md index 5f88ce8ca38..56d23563f4a 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-79 --- - + # --description-- @@ -51,3 +48,56 @@ Consider Brian's interest in working across many fields versus concentrating on ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 3.82, + "finishTime": 10.02, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md index 9867dd455d5..36fa55aa8ae 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-80 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working together with others. Notice it ends with `-ing`, indica ### --feedback-- This adjective describes something that is thrilling or full of energy. It ends with `-ing`, showing a quality or state. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.62, + "finishTimestamp": 28.18 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md index 31ed219cb44..d126871e672 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-81 --- - + # --description-- @@ -45,3 +42,47 @@ TTo extend or go beyond usual limits or boundaries. It's often used to talk abou ### --feedback-- This noun refers to new ideas, products, or methods that improve something or solve problems. It's about coming up with new ways to do things. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 28.38, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md index 976777de56e..19ed243bc7e 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-82 --- - + # --description-- @@ -51,3 +48,56 @@ Consider whether Lisa's motivation is related to work environment or the nature ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.94 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md index cc4a931a4a1..9d83cc465d3 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-83 --- - + # --description-- @@ -52,3 +48,80 @@ He agrees with Lisa ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 34.98 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.45 + }, + { + "character": "Brian", + "opacity": 1, + "startTime": 8.45 + }, + { + "character": "Brian", + "startTime": 8.57, + "finishTime": 10.16, + "dialogue": { + "text": "I'm with you on that one.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.66 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md index 3c748ab456e..c9ec667c225 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-84 --- - + # --description-- @@ -37,3 +34,47 @@ This noun describes the ability to change or adapt easily according to different ### --feedback-- This word refers to the specific functions or positions that individuals can have within a group or organization. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 38.36 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.76 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md index f111304b929..566d8c5e7db 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-85 --- - + # --description-- @@ -20,7 +17,7 @@ Listen carefully and fill in the missing words about what tech roles make possib ## --sentence-- -`They _ us to balance our jobs with personal _ and hobbies.` +`I'm also interested in the flexibility that tech roles offer. They _ us to balance our jobs with personal _ and hobbies.` ## --blanks-- @@ -37,3 +34,56 @@ This verb means to make something possible or to give permission for something. ### --feedback-- This noun refers to things you enjoy doing, like hobbies or activities that catch your attention. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md index 0efe7ddf734..f5aab15821c 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-86 --- - + # --description-- @@ -55,3 +52,56 @@ Is Brian talking about traveling, or is he interested in something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md index 1828c2b24fd..f285c7e7f50 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-87 --- - + # --description-- @@ -45,3 +42,47 @@ This word means discovering or coming up with something, like an answer or solut ### --feedback-- This adjective means very exciting. It often describes something that makes your heart beat faster because it's so exciting or fun. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md index a2b77cc1c45..689b3e667de 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-88 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on the word `satisfaction` and if it suggests feeling tired. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md index 122529e8f39..fd8178da8fc 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-89 --- - + # --description-- @@ -43,3 +40,47 @@ This adjective describes something that is thrilling or causes great enthusiasm. ### --feedback-- This word means receiving or obtaining something. Here, it's also in the `-ing` form, indicating an ongoing action or process. Remember to use double `t`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md index f8bb1a273ee..a72f4990d84 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-90 --- - + # --description-- @@ -53,3 +50,47 @@ Brian talks about being excited by solving problems, not about where to find mot ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md index 93a91f9790d..f0a8796d57b 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md @@ -13,3 +13,221 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Bob", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sarah", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.6, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech?", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 5, + "finishTime": 7, + "dialogue": { + "text": "It's all those amazing gadgets!", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 7.8, + "finishTime": 9.6, + "dialogue": { + "text": "I can see your enthusiasm, Bob!", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 9.9, + "finishTime": 12.3, + "dialogue": { + "text": "Tell me, which tech gadgets are your absolute favorites?", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 13, + "finishTime": 16.2, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 16.3, + "finishTime": 18.9, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health,", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 19.2, + "finishTime": 22.7, + "dialogue": { + "text": "and even helps me stay organized with reminders and notifications.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 23.7, + "finishTime": 26, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 26, + "finishTime": 28.1, + "dialogue": { + "text": "The camera quality, the speed,", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 28.3, + "finishTime": 30.8, + "dialogue": { + "text": "and the number of apps available are what I like the most.", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 31.2, + "finishTime": 33.9, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 34.3, + "finishTime": 37.2, + "dialogue": { + "text": "Gadgets like these are transforming our daily lives.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 37.6, + "finishTime": 40.8, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 41.3, + "finishTime": 44, + "dialogue": { + "text": "I love capturing stunning aerial shots", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 44, + "finishTime": 46.5, + "dialogue": { + "text": "and exploring new angles for photography.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 47.7, + "finishTime": 50.3, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 50.7, + "finishTime": 52.7, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 52.7, + "finishTime": 54.5, + "dialogue": { + "text": "It's amazing how these innovations", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 54.5, + "finishTime": 56.8, + "dialogue": { + "text": "keep making our lives more interesting and connected.", + "align": "right" + } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.3 + }, + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.8 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md index 2f5b51c5efe..1c735765ddb 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-91 --- - + # --description-- @@ -47,3 +44,47 @@ This word is used to point out specific things that are being talked about, in t ### --feedback-- This word refers to small electronic devices or tools that are useful or interesting. It's often used to talk about cool tech items. It is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md index 06bb47f4e2f..7ddc748e75b 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-92 --- - + # --description-- @@ -51,3 +48,47 @@ The latest technology gadgets ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md index 746bfa4615b..96ed9a633c9 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-93 --- - + # --description-- @@ -27,3 +24,47 @@ Sarah: I can see your enthusiasm, Bob! ### --feedback-- This noun describes the feeling of being very excited or interested in something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 8.60 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 2.74, + "dialogue": { + "text": "I can see your enthusiasm, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.24 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md index a7eb6fcbfcb..4f55a749a61 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-94 --- - + # --description-- @@ -22,7 +19,7 @@ Sarah: I can see your enthusiasm, Bob! Tell me, which tech gadgets are your abso ## --sentence-- -`Tell me, _ tech gadgets are your _ favorites?` +`I can see your enthusiasm, Bob! Tell me, _ gadgets are your _ favorites?` ## --blanks-- @@ -39,3 +36,47 @@ This word asks for a specific choice or selection from a known group of items. ### --feedback-- This adjective emphasizes that the choice is the most complete or total among all options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 11.36 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.50, + "dialogue": { + "text": "I can see your enthusiasm, Bob. Tell me, which gadgets are your absolute favorites?", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.00 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md index 09bd788377d..9514f27cc60 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-95 --- - + # --description-- @@ -35,3 +32,47 @@ This preposition is used to show that something belongs to or is part of somethi ### --feedback-- This noun refers to a type of watch that has more features than just telling time, often including apps and internet connectivity. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 15.20 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.66 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md index b247dacc6dd..feadc88525d 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md @@ -5,10 +5,8 @@ challengeType: 22 dashedName: task-96 --- - + + # --description-- `To track` means to follow or monitor the progress, movement, or development of something or someone. @@ -44,3 +42,47 @@ This verb means to monitor or follow the course or progress of something, especi ### --feedback-- This verb means to make it easier or possible for someone to do something by offering services or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md index 99dcae91a0c..2c3332a8708 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-97 --- - + # --description-- @@ -45,3 +42,47 @@ This adjective means arranged in a systematic way, especially on a large scale. ### --feedback-- These are alerts or messages that prompt you to remember tasks or appointments. This word ends with `s`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md index 4d36b7b2989..49fbdc264ee 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-98 --- - + # --description-- @@ -51,3 +48,56 @@ It keeps him connected, tracks his health, and helps him stay organized ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.32, + "finishTime": 10.70, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 11.20 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md index 7185d037ed7..2d1e897054c 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-99 --- - + # --description-- @@ -35,3 +32,47 @@ This word is capitalized and in plural form. ### --feedback-- This word describes advanced mobile phones with extensive computing capabilities and connectivity. It is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 25.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.98 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md index 1f660afcb03..81e873d902e 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-100 --- - + # --description-- @@ -53,3 +50,47 @@ This adjective means something can be accessed or used, like apps in an app stor ### --feedback-- This word is used to indicate the highest degree or the greatest amount of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 25.24, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.60, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.10 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md index 6998dd4ffa5..1e063e1befc 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-101 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on whether design is a factor in Sarah's stated preferences. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.56, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 3.68, + "finishTime": 8.08, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 8.58 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md index dac54e85492..92b3b88cee4 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-102 --- - + # --description-- @@ -43,3 +40,47 @@ This verb means causing a significant change or improvement in something. This w ### --feedback-- This adjective refers to something that happens every day or is part of everyday life. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md index 66cda46110d..6e56479dc8d 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-103 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Bob mentions radio as a factor in transforming daily life. ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md index ec96099aa49..93b5cc92a66 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-104 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to talk about the current period of time or the present days. ### --feedback-- This noun refers to remote-controlled flying machines, often used for photography, racing, or recreation. This word is capitalized. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 39.78 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.20, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.70 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md index 2eb13bfcb4b..7bdc1f302f5 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-105 --- - + # --description-- @@ -43,3 +40,47 @@ This verb involves examining or investigating something in order to learn more a ### --feedback-- This noun refers to the art, practice, or job of taking pictures with a camera, capturing moments, and expressions. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md index 08e3ab9b847..95aa8e526fc 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-106 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective describes something extremely beautiful or impressive. ### --feedback-- In photography, this noun means photographs or the act of taking a photograph. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md index 1b7d3770f1d..f8e77d3a9fe 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-107 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective refers to something related to the air or happening in the sky. ### --feedback-- This noun refers to the specific viewpoints or positions from which photos are taken. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md index c172cb36554..cf2a562eb4c 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-108 --- - + # --description-- @@ -51,3 +48,56 @@ They allow for stunning aerial photography ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.2, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.78, + "finishTime": 9.98, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 10.48 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md index a67e640bd01..64e3aa577d5 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-109 --- - + # --description-- @@ -35,3 +32,47 @@ This adjective in the expression means allowing access, passage, or a view throu ### --feedback-- This noun refers to things that may happen or be the case in the future, often exciting or beneficial opportunities. it is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.48, + "finishTimestamp": 49.32 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.84, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 4.34 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md index a7c5acbe452..9a5e4ff7dc6 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-110 --- - + # --description-- @@ -35,3 +32,47 @@ This noun describes a strong feeling of enthusiasm or excitement for something o ### --feedback-- In this context, this adjective means that a feeling, especially a positive one like enthusiasm, can spread from one person to others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 49.52, + "finishTimestamp": 51.74 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.22, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.72 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md index 0578945ebcc..c64025643be 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-111 --- - + # --description-- @@ -51,3 +48,47 @@ This adjective describes something that arouses curiosity or is enjoyable and en ### --feedback-- This adjective means being in touch with others or having easy access to information, especially through technology. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 51.94, + "finishTimestamp": 56.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.10, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 5.60 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md index bc02e1710e1..fe30597a170 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-112 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on the enthusiasm and positivity in Sarah's statement. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.28, + "finishTimestamp": 55.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 6.26, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob. Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 6.46, + "finishTime": 10.36, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 10.86 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md index ebba772a320..20eaca5ac90 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md @@ -1,6 +1,5 @@ --- id: 65a533f54a5afeff6c6bb996 -videoId: nLDychdBwUg title: "Dialogue 5: Discussing Open-source Software" challengeType: 21 dashedName: dialogue-5-discussing-open-source-software @@ -13,3 +12,284 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Tom", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sophie", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.5, + "dialogue": { + "text": "Hey, Sophie, what motivates you", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 3.8, + "finishTime": 6.9, + "dialogue": { + "text": "to work on open-source software projects in your free time?", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 7.8, + "finishTime": 10.2, + "dialogue": { + "text": "Well, I love contributing to open-source projects!", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 10.5, + "finishTime": 13, + "dialogue": { + "text": "I really like the sense of community and collaboration.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 13.5, + "finishTime": 15.4, + "dialogue": { + "text": "It's incredible how people from around the world", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 15.4, + "finishTime": 17.5, + "dialogue": { + "text": "come together to create something amazing.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 18.2, + "finishTime": 20.4, + "dialogue": { + "text": "Yeah. I checked out some open-source projects,", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 20.5, + "finishTime": 23.1, + "dialogue": { + "text": "but I admit that I have problems with the amount of time", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 23.1, + "finishTime": 24.3, + "dialogue": { + "text": "it can take to contribute.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 24.7, + "finishTime": 27.1, + "dialogue": { + "text": "Sometimes, it can be so time-consuming.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 27.1, + "finishTime": 29.7, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 29.9, + "finishTime": 33.3, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 33.8, + "finishTime": 36.5, + "dialogue": { + "text": "Open source is all about transparency and accessibility,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 36.5, + "finishTime": 38.4, + "dialogue": { + "text": "and that's something I truly believe in.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 39, + "finishTime": 42.2, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 42.7, + "finishTime": 45.7, + "dialogue": { + "text": "For me, I like the idea of practicing my skills", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 45.7, + "finishTime": 48, + "dialogue": { + "text": "and getting recognition for my contributions.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 48.5, + "finishTime": 51.4, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 52.4, + "finishTime": 56, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 56.4, + "finishTime": 58, + "dialogue": { + "text": "there isn't much you can do to save it.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 58.4, + "finishTime": 61.4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 62.2, + "finishTime": 65.2, + "dialogue": { + "text": "That's true. The sustainability of open-source projects", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 65.2, + "finishTime": 67.5, + "dialogue": { + "text": "is something I'm growing to appreciate more.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 67.8, + "finishTime": 69.2, + "dialogue": { + "text": "Thanks for sharing your motivations.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 69.8, + "finishTime": 71.7, + "dialogue": { + "text": "I think I'll see if I can find a project", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 71.7, + "finishTime": 72.8, + "dialogue": { + "text": "to dedicate some spare time to.", + "align": "left" + } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 73.3 + }, + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 73.8 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md index a463dcea5d0..ee5d378ba03 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-113 --- - + # --description-- @@ -37,3 +34,47 @@ This preposition is used to indicate involvement or engagement in a particular a ### --feedback-- This part of the term refers to the origin or starting point, in this case, indicating that the software's foundational code is open and accessible to all. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md index 2d227ef6fe5..1e409d23632 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-114 --- - + # --description-- @@ -51,3 +48,47 @@ Think about whether Tom is asking about skills or the reasons behind an activity ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md index ab28bfe2622..395d2fa3522 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-115 --- - + # --description-- @@ -20,7 +17,7 @@ Sophie: Well, I love contributing to open-source projects! I really like the sen ## --sentence-- -`I really like the sense of _ and _.` +`Well, I love contributing to open-source projects! I really like the sense of _ and _.` ## --blanks-- @@ -37,3 +34,47 @@ Describes a group of people who share common interests or values, especially in ### --feedback-- Refers to the act of working with someone to produce or create something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md index c9e678c193b..e321ce0b307 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-116 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Sophie's enjoyment comes from personal recognition or somethi ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md index 7b9101449a3..6a2c024d0c1 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-117 --- - + # --description-- @@ -45,3 +42,47 @@ Refers to the earth or the globe. ### --feedback-- Indicates the act of joining with others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md index d2ba30725da..3917f0f08f3 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-118 --- - + # --description-- @@ -51,3 +48,47 @@ Sophie talks about working as a group. Is it about being famous or doing somethi ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md index a0b608d8342..a41f1bfc8cb 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-119 --- - + # --description-- @@ -20,7 +17,7 @@ Tom: Yeah. I checked some open-source projects, but I admit that I have problems ## --sentence-- -`Yeah. I checked some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` +`Yeah, I checked out some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` ## --blanks-- @@ -37,3 +34,47 @@ This verb means to confess or acknowledge something, often reluctantly. ### --feedback-- This noun is used to describe the quantity or measure of something, in this case, referring to time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 23.34 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.28, + "dialogue": { + "text": "Yeah, I checked out some open-source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.78 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md index 6bcebcf1558..64acf0261ac 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-120 --- - + # --description-- @@ -18,7 +15,7 @@ Tom "Sometimes, it can be so time-consuming." ## --sentence-- -`Sometimes, it can be _ time-_.` +`Sometimes it can be _ time-_.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to emphasize the degree of something, in this case, how much t ### --feedback-- This word describes activities that use up a lot of time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 23.52, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.64, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.14 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md index 2bbaf6f322f..a2ad29fdb26 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-121 --- - + # --description-- @@ -51,3 +48,56 @@ Think about if Tom says the projects are easy or something else. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Yeah, I checked out some open source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 7.46, + "finishTime": 10.10, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 10.60 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md index 26975fa42d5..52145efc9dc 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-122 --- - + # --description-- @@ -21,7 +18,7 @@ For example, if you say: `I decided to learn a new language and practice every d ## --sentence-- -`It can _ a _.` +`I understand, Tom. It can _ a _.` ## --blanks-- @@ -38,3 +35,47 @@ This word is used to talk about something being true or existing. ### --feedback-- This word means a promise to do something or give your time to it, showing you are ready to work hard and keep your word. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 28.72 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md index 4232fcd5dbb..10d1d55dd1f 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-123 --- - + # --description-- @@ -35,3 +32,47 @@ This verb, in this context, means to tolerate or bear, especially when talking a ### --feedback-- This adjective describes something not open or accessible to the general public or kept for the use of a specific person or group. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md index 25acc5b187b..4920280d317 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-124 --- - + # --description-- @@ -35,3 +32,47 @@ This word, ending in `-ing`, means to observe or witness something happening.. ### --feedback-- Also ending in `-ing`, this word is used to describe the state or condition of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md index e4878ae4f6c..feb206c8d3b 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-125 --- - + # --description-- @@ -37,3 +34,51 @@ This word means being open and clear about things. It ends with `-y`, showing it ### --feedback-- This word is about making things easy for everyone to use or get. It ends with `-ity`, showing it's about the state of being accessible. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 32.52, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 5.74, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.24 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md index 2e6e266c6ab..b1b1c1ca42c 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-126 --- - + # --description-- -Sophie expresses her thoughts on open-source projects.. +Sophie expresses her thoughts on open-source projects. # --question-- @@ -51,3 +48,56 @@ Reflect on Sophie's belief in open source and its benefits. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 7.16, + "dialogue": { + "text": "I understand, Tom. It can be a commitment, but I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.56, + "finishTime": 12.10, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 12.60 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md index 9ef306c9252..e6c5fe030c7 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-127 --- - + # --description-- @@ -35,3 +32,51 @@ This noun refers to the quality of being open and clear, especially about proces ### --feedback-- This noun describes something that provides a reason or incentive for someone to act in a certain way or to put in more effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 41.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md index bbaba54e9e1..e05f1982063 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-128 --- - + # --description-- @@ -37,3 +34,51 @@ This verb means to perform an activity or exercise repeatedly or regularly in or ### --feedback-- This noun refers to the action or process of acknowledging someone's efforts, achievements, or qualities. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 41.5, + "finishTimestamp": 47.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.62, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.12 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md index a821137445a..5d15ffd7545 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-129 --- - + # --description-- @@ -35,3 +32,51 @@ This adjective is used to describe something that is very good or impressive. ### --feedback-- This adjective means having the ability, power, or qualities necessary to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 47.54, + "finishTimestamp": 50.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.9, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.4 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md index 76ee25756a6..045d8463245 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-130 --- - + # --description-- @@ -51,3 +48,69 @@ Reflect on whether Tom's attraction to open-source is about tight schedules. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 50.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.42, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.88, + "finishTime": 10.2, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 10.72, + "finishTime": 13.62, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 14.12 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md index f47924c5a21..763fa02b646 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-131 --- - + # --description-- @@ -18,7 +15,7 @@ Sophie: Also, when software becomes obsolete because it's no longer maintained, ## --sentence-- -`Also, when software becomes _, there isn't _ you can do to _ it.` +`Also, when software becomes _ because it's no longer maintained, there isn't _ you can do to _ it.` ## --blanks-- @@ -43,3 +40,51 @@ This word is used to indicate a small amount or degree; not a lot. ### --feedback-- This verb means to keep safe or rescue from harm or danger, in this context, to try and make something usable again. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md index 27b0dbb43cf..a187bb8b293 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-132 --- - + # --description-- @@ -43,3 +40,51 @@ Something that once was true or possible is not the case anymore. ### --feedback-- This contraction of `is not` is used to express the negation of the statement that follows, indicating a limitation or impossibility. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md index 8941733f8b9..ca97fa188f9 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-133 --- - + # --description-- @@ -51,3 +48,51 @@ It can't be used effectively anymore ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md index e225360b121..baadc6b07e8 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-134 --- - + # --description-- @@ -18,7 +15,7 @@ AUDIO REFERENCE: ## --sentence-- -`With open-_, there's always a _ for continuous improvement.` +`With open _, there's always a _ for continuous improvement.` ## --blanks-- @@ -35,3 +32,51 @@ Refers to a model where the source code is available for anyone to see, modify, ### --feedback-- This noun means an opportunity or possibility for something to happen or be done, especially something desirable. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md index 410699942ed..15c83340f6f 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-135 --- - + # --description-- @@ -35,3 +32,51 @@ It indicates an ongoing, unending process of enhancement or development. ### --feedback-- It refers to the act of making something better, more effective, or more efficient. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md index a8c886124e7..7718697bd96 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-137 --- - + # --description-- @@ -27,3 +24,51 @@ Tom: The sustainability of open-source projects is something I'm growing to appr ### --feedback-- It refers to the ongoing development of open-source projects over the long term. it ends with `-y`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md index dcc88c43208..d6ae5f89d89 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-138 --- - + # --description-- -`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time,` means they might not like them at first, but after some timethey start to like them more. +`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time` means they might not like them at first, but after some timethey start to like them more. # --fillInTheBlank-- @@ -34,4 +31,52 @@ This word means being able to continue over time in a good way. ### --feedback-- -Starting to like something more as you understand it better. +Starting to like something more as you understand it better. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md index ecd1d6e7c95..abc9cf2415f 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-139 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on Tom's statement about sustainability and appreciation, not complexity ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md index a6a32b631e8..87c40eaf830 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-140 --- - + # --description-- @@ -47,3 +44,51 @@ This verb means to discover or locate something after searching for it. ### --feedback-- Describes time that is available to use as you wish, not taken up by work or other obligations. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md index bd2fddb1bb4..52d0740b1db 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-141 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on whether Tom's interest is in language learning or engaging in a proje ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md index ea7dbd6dc1e..05dc28f6ddc 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-1 --- - + # --description-- @@ -18,7 +15,7 @@ Listen to what Brian asks Maria. Pay attention to the verbs he uses. ## --sentence-- -`Hey Maria, I _ a question. Do you know what _ the team?` +`Maria, I _ a question. Do you know what _ the team?` ## --blanks-- @@ -35,3 +32,47 @@ This verb is used when someone is in possession of something or wants to express ### --feedback-- This word means to give someone a reason to do something. This verb in conjugated in the third person. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 3.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.02 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md index d39e86e67e9..ef6b246a2e4 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-2 --- - + # --description-- @@ -39,3 +36,47 @@ This word is used to indicate the reason or cause of something. It is conjugated ### --feedback-- It ends with `-ed` because it's an adjective that comes from a verb. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 3.92, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.50, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.00 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md index 5c39c1c7312..050241fa5e6 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-3 --- - + # --description-- @@ -20,7 +17,7 @@ Listen to the audio and complete the sentence. ## --sentence-- -`Hey Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` +`Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` ## --blanks-- @@ -37,3 +34,56 @@ Think about the word that means to give someone a reason to do something right n ### --feedback-- This word describes how someone feels when they have a reason or desire to do something. This word ends with `-ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md index 4a6aa89ed04..90a6bbe82b3 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md @@ -5,20 +5,17 @@ challengeType: 19 dashedName: task-4 --- - + # --description-- -In the dialogue, Brian asks three questions but they are all connected. +In the dialogue, Brian asks a couple of related questions. # --question-- ## --text-- -`What is Brian asking Maria about?` +What is Brian asking Maria about? ## --answers-- @@ -51,3 +48,56 @@ The conversation is centered around motivation, not the physical location of whe ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md index 3e923e63532..f725307b614 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-21 --- - + # --description-- @@ -36,3 +33,46 @@ This word means working together with others on a project or task. It ends with This word means thinking of many ideas together with a group of people. It ends with `-ing`. +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md index 1c4102ed1d3..2522ee2b5e1 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-22 --- - + # --description-- @@ -51,3 +48,47 @@ Maria refers to her creative team, not her friends, as her collaborators. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.28 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.28 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md index c3f28429a68..ab0e4646869 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-23 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to create or produce something, especially ideas or solutions. ### --feedback-- This word refers to ideas or plans that are used in thinking, discussion, or creating something new. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 41.84, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.78, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.28 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md index c2510030f2c..8795bdf6d10 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-24 --- - + # --description-- @@ -51,3 +48,56 @@ Collaborating with the creative team ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.70, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.14, + "finishTime": 7.92, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 8.42 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md index 3c6ee35860c..b801e7efce9 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-25 --- - + # --description-- @@ -35,3 +32,47 @@ This word means working together with others to achieve a goal. This word is cap ### --feedback-- This word refers to the use of imagination or original ideas to create something. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 48.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.22 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md index a9680b0824a..75c938c595f 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-27 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to find something or someone without planning to, especially pro ### --feedback-- This word is used for problems with machines or computers that need special knowledge to understand or fix. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md index 5ee0b89f981..89a97ac83d7 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-29 --- - + # --description-- @@ -27,3 +24,47 @@ When something is `frustrating`, it makes you feel upset or annoyed because you ### --feedback-- This word is used when something makes you feel upset or annoyed because it is difficult or impossible to deal with. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 53.02, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.50, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.00 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md index 1f9e7b21387..02733f0f66c 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-30 --- - + # --description-- @@ -51,3 +48,65 @@ Does having many ideas make Brian frustrated, or is it something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 5.02, + "finishTime": 9.34, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 9.74, + "finishTime": 11.24, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 11.74 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md index 3dddb17e8ef..47e9d5633b4 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-31 --- - + # --description-- @@ -35,3 +32,47 @@ This word means little problems with things like computers or apps. When there a ### --feedback-- This word means to make an effort to do something, especially when it's hard. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md index fe21921444c..ce9ced73581 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-33 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether taking a break is mentioned as a way to deal with glitches. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md index 69d94c303e5..7c44898f823 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-34 --- - + # --description-- @@ -37,3 +34,47 @@ This word means being very excited or eager about something. It's like when you ### --feedback-- This word means finding a way to fix a problem. It's like when you figure out the answer to a difficult question. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.76, + "finishTimestamp": 65.66 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.90, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.40 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md index 0365cb0e9f0..17d79cd22ec 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md @@ -6,10 +6,7 @@ dashedName: task-36 --- - + # --description-- @@ -52,3 +49,56 @@ Reflect on whether the speed of solving problems is what Maria highlights as mot ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.96, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.7, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.16, + "finishTime": 8.84, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 9.34 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md index 7525fdadd5f..39df7aceed5 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-37 --- - + # --description-- @@ -18,7 +15,7 @@ In this part of the conversation, Brian talks about how the talk made him feel a ## --sentence-- -`Yeah. Wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` +`Yeah, wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` ## --blanks-- @@ -35,3 +32,47 @@ This word means something that gives you energy or a reason to do something. It' ### --feedback-- This word means giving something that you have to others. It's like when you tell someone your ideas or feelings. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 70.38, + "finishTimestamp": 76.10 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 6.72, + "dialogue": { + "text": "Yeah, wow. You know what? This was a really motivating talk. Thanks for sharing your thoughts.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.22 + } + ] +} +``` diff --git a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md index 6bb2b29cd3b..b1bcee11103 100644 --- a/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md +++ b/curriculum/challenges/japanese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-136 --- - + # --description-- @@ -51,3 +48,60 @@ Reflect on the connection between updates and user experience Sophie suggests. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.02, + "finishTime": 10.02, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/korean/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md b/curriculum/challenges/korean/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md index 9144c8233b2..b5f4e08e236 100644 --- a/curriculum/challenges/korean/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md +++ b/curriculum/challenges/korean/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md @@ -26,7 +26,7 @@ HTML5의 `audio` 요소는 마크업에서 소리나 오디오 스트림 콘텐 # --instructions-- -캠퍼 캣(Camper Cat)에서 쉬는 시간입니다. 이번에는 캠퍼 Zersiax(@zersiax)를 만나보겠습니다. 그는 스크린 리더 사용자이자 접근성 마스터 입니다. `p` 요소 뒤에 `audio` 요소를 추가하면 스크린 리더 작동 소리를 듣을 수 있습니다. `controls` 속성을 포함하세요. 그런 다음 `src` 속성을 `https://s3.amazonaws.com/freecodecamp/screen-reader.mp3`로, `type` 속성을 `"audio/mpeg"`로 설정하여 `audio` 태그 안에 `source` 요소를 배치하세요. +캠퍼 캣(Camper Cat)에서 쉬는 시간입니다. 이번에는 캠퍼 Zersiax(@zersiax)를 만나보겠습니다. 그는 스크린 리더 사용자이자 접근성 마스터 입니다. `p` 요소 뒤에 `audio` 요소를 추가하면 스크린 리더 작동 소리를 듣을 수 있습니다. `controls` 속성을 포함하세요. Then place a `source` element inside the `audio` tags with the `src` attribute set to `https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3` and `type` attribute set to `"audio/mpeg"`. **참고:** 오디오 클립이 빠르게 들릴 수 있고 이해하기 어려울 수 있지만, 이는 스크린 리더 사용자에게 정상적인 속도입니다. @@ -70,7 +70,7 @@ assert($('audio').children('source').length === 1); ```js assert( $('source').attr('src') === - 'https://s3.amazonaws.com/freecodecamp/screen-reader.mp3' + 'https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3' ); ``` @@ -108,7 +108,7 @@ assert($('source').attr('type') === 'audio/mpeg');

A sound clip of Zersiax's screen reader in action.

diff --git a/curriculum/challenges/korean/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md b/curriculum/challenges/korean/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md index 422ace6d1bb..effdb2900f9 100644 --- a/curriculum/challenges/korean/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md +++ b/curriculum/challenges/korean/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md @@ -93,7 +93,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -186,7 +186,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/korean/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md b/curriculum/challenges/korean/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md index 23e297bb301..400f7e466ae 100644 --- a/curriculum/challenges/korean/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md +++ b/curriculum/challenges/korean/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md @@ -102,7 +102,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -198,7 +198,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/korean/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md b/curriculum/challenges/korean/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md index dd7c5cad253..02517d44610 100644 --- a/curriculum/challenges/korean/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md +++ b/curriculum/challenges/korean/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md @@ -95,7 +95,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -190,7 +190,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/korean/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md b/curriculum/challenges/korean/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md index 9da97c919f5..b77c9261e3a 100644 --- a/curriculum/challenges/korean/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md +++ b/curriculum/challenges/korean/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md @@ -98,7 +98,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -192,7 +192,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/korean/02-javascript-algorithms-and-data-structures/basic-javascript/compound-assignment-with-augmented-addition.md b/curriculum/challenges/korean/02-javascript-algorithms-and-data-structures/basic-javascript/compound-assignment-with-augmented-addition.md index f966d7484dd..cb030647d49 100644 --- a/curriculum/challenges/korean/02-javascript-algorithms-and-data-structures/basic-javascript/compound-assignment-with-augmented-addition.md +++ b/curriculum/challenges/korean/02-javascript-algorithms-and-data-structures/basic-javascript/compound-assignment-with-augmented-addition.md @@ -1,6 +1,6 @@ --- id: 56533eb9ac21ba0edf2244af -title: Compound Assignment With Augmented Addition +title: 더하기를 추가해서 복합적으로 할당하기 challengeType: 1 videoUrl: 'https://scrimba.com/c/cDR6LCb' forumTopicId: 16661 @@ -9,15 +9,15 @@ dashedName: compound-assignment-with-augmented-addition # --description-- -In programming, it is common to use assignments to modify the contents of a variable. Remember that everything to the right of the equals sign is evaluated first, so we can say: +프로그래밍에서는 할당을 사용해서 변수의 값을 변경하는 일이 자주 일어납니다. 우선 등호(=) 의 우측 변에 있는 모든 것이 먼저 연산된다는 것을 기억하고 다음을 보세요. ```js myVar = myVar + 5; ``` -to add `5` to `myVar`. Since this is such a common pattern, there are operators which do both a mathematical operation and assignment in one step. +위와 같이 하면 `5`를 `myVar`에 더합니다. 이러한 조작은 일반적인 패턴이므로, 산술 연산과 할당 2가지를 한꺼번에 처리하는 연산자가 있습니다. -One such operator is the `+=` operator. +그중 하나가 `+=` 연산자입니다. ```js let myVar = 1; @@ -25,39 +25,39 @@ myVar += 5; console.log(myVar); ``` -`6` would be displayed in the console. +콘솔에 `6`의 값이 나타날 것입니다. # --instructions-- -Convert the assignments for `a`, `b`, and `c` to use the `+=` operator. +`a`, `b`, 및 `c`에 대한 할당을 `+=` 연산자를 사용하도록 변환하십시오. # --hints-- -`a` should equal `15`. +`a`는 `15`와 같아야 합니다. ```js assert(a === 15); ``` -`b` should equal `26`. +`b`는 `26`과 같아야 합니다. ```js assert(b === 26); ``` -`c` should equal `19`. +`c`는 `19`와 같아야 합니다. ```js assert(c === 19); ``` -You should use the `+=` operator for each variable. +각 변수에 `+=` 연산자를 사용해야 합니다. ```js assert(__helpers.removeJSComments(code).match(/\+=/g).length === 3); ``` -You should not modify the code above the specified comment. +지정된 코멘트 위의 코드를 변경하면 안됩니다. ```js assert( diff --git a/curriculum/challenges/korean/02-javascript-algorithms-and-data-structures/debugging/prevent-infinite-loops-with-a-valid-terminal-condition.md b/curriculum/challenges/korean/02-javascript-algorithms-and-data-structures/debugging/prevent-infinite-loops-with-a-valid-terminal-condition.md index 6d3bda99872..6e557c5ec2b 100644 --- a/curriculum/challenges/korean/02-javascript-algorithms-and-data-structures/debugging/prevent-infinite-loops-with-a-valid-terminal-condition.md +++ b/curriculum/challenges/korean/02-javascript-algorithms-and-data-structures/debugging/prevent-infinite-loops-with-a-valid-terminal-condition.md @@ -28,13 +28,13 @@ function loopy() { # --hints-- -Your code should change the comparison operator in the terminal condition (the middle part) of the `for` loop. +코드의 `for` 반복문의 종료 조건(중간 부분) 에서 비교 연산자를 변경해야 합니다. ```js assert(__helpers.removeJSComments(code).match(/i\s*?<=\s*?4;/g).length == 1); ``` -Your code should fix the comparison operator in the terminal condition of the loop. +코드의 반복문의 종료조건의 비교 연산자를 변경해야 합니다. ```js assert(!__helpers.removeJSComments(code).match(/i\s*?!=\s*?4;/g)); diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md b/curriculum/challenges/korean/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md new file mode 100644 index 00000000000..47a2bcd6988 --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md @@ -0,0 +1,887 @@ +--- +id: 5e44413e903586ffb414c94e +title: Build a Budget App Project +challengeType: 23 +forumTopicId: 462361 +dashedName: build-a-budget-app-project +--- + +# --description-- + +Complete the `Category` class. It should be able to instantiate objects based on different budget categories like *food*, *clothing*, and *entertainment*. When objects are created, they are passed in the name of the category. The class should have an instance variable called `ledger` that is a list. The class should also contain the following methods: + +- A `deposit` method that accepts an amount and description. If no description is given, it should default to an empty string. The method should append an object to the ledger list in the form of `{"amount": amount, "description": description}`. +- A `withdraw` method that is similar to the `deposit` method, but the amount passed in should be stored in the ledger as a negative number. If there are not enough funds, nothing should be added to the ledger. This method should return `True` if the withdrawal took place, and `False` otherwise. +- A `get_balance` method that returns the current balance of the budget category based on the deposits and withdrawals that have occurred. +- A `transfer` method that accepts an amount and another budget category as arguments. The method should add a withdrawal with the amount and the description "Transfer to [Destination Budget Category]". The method should then add a deposit to the other budget category with the amount and the description "Transfer from [Source Budget Category]". If there are not enough funds, nothing should be added to either ledgers. This method should return `True` if the transfer took place, and `False` otherwise. +- A `check_funds` method that accepts an amount as an argument. It returns `False` if the amount is greater than the balance of the budget category and returns `True` otherwise. This method should be used by both the `withdraw` method and `transfer` method. + +When the budget object is printed it should display: + +- A title line of 30 characters where the name of the category is centered in a line of `*` characters. +- A list of the items in the ledger. Each line should show the description and amount. The first 23 characters of the description should be displayed, then the amount. The amount should be right aligned, contain two decimal places, and display a maximum of 7 characters. +- A line displaying the category total. + +Here is an example usage: + +```py +food = Category("Food") +food.deposit(1000, "deposit") +food.withdraw(10.15, "groceries") +food.withdraw(15.89, "restaurant and more food for dessert") +clothing = Category("Clothing") +food.transfer(50, clothing) +print(food) +``` + +And here is an example of the output: + +```bash +*************Food************* +initial deposit 1000.00 +groceries -10.15 +restaurant and more foo -15.89 +Transfer to Clothing -50.00 +Total: 923.96 +``` + +Besides the `Category` class, create a function (outside of the class) called `create_spend_chart` that takes a list of categories as an argument. It should return a string that is a bar chart. + +The chart should show the percentage spent in each category passed in to the function. The percentage spent should be calculated only with withdrawals and not with deposits. Down the left side of the chart should be labels 0 - 100. The "bars" in the bar chart should be made out of the "o" character. The height of each bar should be rounded down to the nearest 10. The horizontal line below the bars should go two spaces past the final bar. Each category name should be written vertically below the bar. There should be a title at the top that says "Percentage spent by category". + +This function will be tested with up to four categories. + +Look at the example output below very closely and make sure the spacing of the output matches the example exactly. + +```bash +Percentage spent by category +100| + 90| + 80| + 70| + 60| o + 50| o + 40| o + 30| o + 20| o o + 10| o o o + 0| o o o + ---------- + F C A + o l u + o o t + d t o + h + i + n + g +``` + +# --hints-- + +The `deposit` method should create a specific object in the ledger instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit(self): + self.food.deposit(900, "deposit") + actual = self.food.ledger[0] + expected = {"amount": 900, "description": "deposit"} + self.assertEqual(actual, expected, 'Expected "deposit" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `deposit` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit_no_description(self): + self.food.deposit(45.56) + actual = self.food.ledger[0] + expected = {"amount": 45.56, "description": ""} + self.assertEqual(actual, expected, 'Expected calling "deposit" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should create a specific object in the `ledger` instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": "milk, cereal, eggs, bacon, bread"} + self.assertEqual(actual, expected, 'Expected "withdraw" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `withdraw` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": ""} + self.assertEqual(actual, expected, 'Expected "withdraw" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `True` if the withdrawal took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + self.assertEqual(good_withdraw, True, 'Expected "withdraw" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `food.deposit(900, "deposit")` and `food.withdraw(45.67, "milk, cereal, eggs, bacon, bread")` should return a balance of `854.33`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_get_balance(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.get_balance() + expected = 854.33 + self.assertEqual(actual, expected, 'Expected balance to be 854.33') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `transfer` method on a category object should create a specific ledger item in that category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.food.ledger[2] + expected = {"amount": -transfer_amount, "description": "Transfer to Entertainment"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `True` if the transfer took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + self.assertEqual(good_transfer, True, 'Expected "transfer" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `transfer` on a category object should reduce the balance in the category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + food_balance_before = self.food.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + food_balance_after = self.food.get_balance() + self.assertEqual(food_balance_before - food_balance_after, transfer_amount, 'Expected "transfer" method to reduce balance in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should increase the balance of the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + entertainment_balance_before = self.entertainment.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + entertainment_balance_after = self.entertainment.get_balance() + self.assertEqual(entertainment_balance_after - entertainment_balance_before, transfer_amount, 'Expected "transfer" method to increase balance in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should create a specific ledger item in the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.entertainment.ledger[0] + expected = {"amount": transfer_amount, "description": "Transfer from Food"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `False` if the amount passed to the method is greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(20) + expected = False + self.assertEqual(actual, expected, 'Expected "check_funds" method to be False') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `True` if the amount passed to the method is not greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(10) + expected = True + self.assertEqual(actual, expected, 'Expected "check_funds" method to be True') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `False` if the withdrawal didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_funds(self): + self.food.deposit(100, "deposit") + good_withdraw = self.food.withdraw(100.10) + self.assertEqual(good_withdraw, False, 'Expected "withdraw" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `False` if the transfer didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer_no_funds(self): + self.food.deposit(100, "deposit") + good_transfer = self.food.transfer(200, self.entertainment) + self.assertEqual(good_transfer, False, 'Expected "transfer" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Printing a `Category` instance should give a different string representation of the object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_to_string(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + self.food.transfer(20, self.entertainment) + actual = str(self.food) + expected = "*************Food*************\\ndeposit 900.00\\nmilk, cereal, eggs, bac -45.67\\nTransfer to Entertainme -20.00\\nTotal: 834.33" + self.assertEqual(actual, expected, 'Expected different string representation of object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +` + const out = runPython(testCode); + assert(out); + } +}) +``` + +`create_spend_chart` should print a different chart representation. Check that all spacing is exact. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + self.business = budget.Category("Business") + + def test_create_spend_chart(self): + self.food.deposit(900, "deposit") + self.entertainment.deposit(900, "deposit") + self.business.deposit(900, "deposit") + self.food.withdraw(105.55) + self.entertainment.withdraw(33.40) + self.business.withdraw(10.99) + actual = budget.create_spend_chart([self.business, self.food, self.entertainment]) + expected = "Percentage spent by category\\n100| \\n 90| \\n 80| \\n 70| o \\n 60| o \\n 50| o \\n 40| o \\n 30| o \\n 20| o o \\n 10| o o \\n 0| o o o \\n ----------\\n B F E \\n u o n \\n s o t \\n i d e \\n n r \\n e t \\n s a \\n s i \\n n \\n m \\n e \\n n \\n t " + self.assertEqual(actual, expected, 'Expected different chart representation. Check that all spacing is exact.') +`); + + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Category: + pass + +def create_spend_chart(categories): + pass +``` + +# --solutions-- + +```py +class Category: + + def __init__(self, name): + self.name = name + self.ledger = [] + self.balance = 0 + self.spent = 0 + + def __str__(self): + first_line = f'{self.name.center(30, "*")}\n' + lines = '' + total = f'Total: {format(self.balance, ".2f")}' + + for n in range(len(self.ledger)): + descr = self.ledger[n]["description"][:23] + am = format(float(self.ledger[n]["amount"]), ".2f")[:7] + lines = lines + f'{descr:<23}{am:>7}\n' + + return f'{first_line}{lines}{total}' + + def deposit(self, amount, description=''): + self.ledger.append({ + 'amount': float(amount), + 'description': description + }) + self.balance = self.balance + float(amount) + + def withdraw(self, amount, description=''): + if self.check_funds(amount): + self.ledger.append({ + 'amount': -float(amount), + 'description': description + }) + self.balance = self.balance - float(amount) + self.spent = self.spent + float(amount) + return True + else: + return False + + def get_balance(self): + return self.balance + + def transfer(self, amount, category): + if self.check_funds(amount): + # withdraw + self.ledger.append({ + 'amount': -float(amount), + 'description': f'Transfer to {category.name}' + }) + self.balance = self.balance - float(amount) + # deposit + category.deposit(amount, f'Transfer from {self.name}') + + return True + else: + return False + + def check_funds(self, amount): + if float(amount) > self.balance: + return False + else: + return True + + +def create_spend_chart(categories): + total_expenses = 0 + obj = {} + col1 = [] + str = [] + final_str = 'Percentage spent by category\n' + label_max_length = 0 + label_strings = [] + + for category in categories: + total_expenses = total_expenses + category.spent + obj[category.name] = {'expenses': category.spent} + obj[category.name]['label'] = list(category.name) + if len(obj[category.name]['label']) > label_max_length: + label_max_length = len(obj[category.name]['label']) + + for category in categories: + obj[category.name]['percent'] = ( + (category.spent / total_expenses * 100) // 10) * 10 + obj[category.name]['column'] = [] + for i in range(0, 110, 10): + if obj[category.name]['percent'] >= i: + obj[category.name]['column'].insert(0, 'o') + else: + obj[category.name]['column'].insert(0, ' ') + + for i in range(0, 110, 10): + col1.insert(0, i) + + for i in range(11): + str.append("") + for key in obj: + str[i] += (f'{obj[key]["column"][i]} ') + final_str += f'{col1[i]:>3}| {str[i]}\n' + final_str += f' {"-"*(1+3*len(obj))}\n ' + + for i in range(label_max_length): + label_strings.append(' ') + for k in obj: + if len(obj[k]['label']) < label_max_length: + obj[k]['label'].extend( + f'{" "*(label_max_length-len(obj[k]["label"]))}') + + label_strings[i] += f'{obj[k]["label"][i]} ' + if i < label_max_length - 1: + label_strings[i] += '\n ' + final_str += label_strings[i] + + print(final_str) + return (final_str) + +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md b/curriculum/challenges/korean/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md new file mode 100644 index 00000000000..ef719adc3a7 --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md @@ -0,0 +1,869 @@ +--- +id: 5e444147903586ffb414c94f +title: Build a Polygon Area Calculator Project +challengeType: 23 +forumTopicId: 462363 +dashedName: build-a-polygon-area-calculator-project +--- + +# --description-- + +In this project you will use object oriented programming to create a `Rectangle` class and a `Square` class. The `Square` class should be a subclass of `Rectangle`, and inherit its methods and attributes. + +## Rectangle class + +When a Rectangle object is created, it should be initialized with `width` and `height` attributes. The class should also contain the following methods: + +- `set_width` +- `set_height` +- `get_area`: Returns area (`width * height`) +- `get_perimeter`: Returns perimeter (`2 * width + 2 * height`) +- `get_diagonal`: Returns diagonal (`(width ** 2 + height ** 2) ** .5`) +- `get_picture`: Returns a string that represents the shape using lines of "\*". The number of lines should be equal to the height and the number of "\*" in each line should be equal to the width. There should be a new line (`\n`) at the end of each line. If the width or height is larger than 50, this should return the string: "Too big for picture.". +- `get_amount_inside`: Takes another shape (square or rectangle) as an argument. Returns the number of times the passed in shape could fit inside the shape (with no rotations). For instance, a rectangle with a width of 4 and a height of 8 could fit in two squares with sides of 4. + +Additionally, if an instance of a `Rectangle` is represented as a string, it should look like: `Rectangle(width=5, height=10)` + +## Square class + +The `Square` class should be a subclass of `Rectangle`. When a `Square` object is created, a single side length is passed in. The `__init__` method should store the side length in both the `width` and `height` attributes from the `Rectangle` class. + +The `Square` class should be able to access the `Rectangle` class methods but should also contain a `set_side` method. If an instance of a `Square` is represented as a string, it should look like: `Square(side=9)` + +Additionally, the `set_width` and `set_height` methods on the `Square` class should set both the width and height. + +## Usage example + +```py +rect = Rectangle(10, 5) +print(rect.get_area()) +rect.set_height(3) +print(rect.get_perimeter()) +print(rect) +print(rect.get_picture()) + +sq = Square(9) +print(sq.get_area()) +sq.set_side(4) +print(sq.get_diagonal()) +print(sq) +print(sq.get_picture()) + +rect.set_height(8) +rect.set_width(16) +print(rect.get_amount_inside(sq)) +``` + +That code should return: + +```bash +50 +26 +Rectangle(width=10, height=3) +********** +********** +********** + +81 +5.656854249492381 +Square(side=4) +**** +**** +**** +**** + +8 +``` + +# --hints-- + +The `Square` class should be a subclass of the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_subclass(self): + actual = issubclass(shape_calculator.Square, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a subclass of the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `Square` class should be a distinct class from the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_distinct_classes(self): + actual = shape_calculator.Square is not shape_calculator.Rectangle + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a distinct class from the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +A square object should be an instance of the `Square` class and the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_is_square_and_rectangle(self): + actual = isinstance(self.sq, shape_calculator.Square) and isinstance(self.sq, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected square object to be an instance of the Square class and the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Rectangle(3, 6)` should be `Rectangle(width=3, height=6)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_string(self): + actual = str(self.rect) + expected = "Rectangle(width=3, height=6)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle to be "Rectangle(width=3, height=6)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Square(5)` should be `Square(side=5)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_string(self): + actual = str(self.sq) + expected = "Square(side=5)" + self.assertEqual(actual, expected, 'Expected string representation of square to be "Square(side=5)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_area()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_area(self): + actual = self.rect.get_area() + expected = 18 + self.assertEqual(actual, expected, 'Expected area of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_area()` should return `25`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_area(self): + actual = self.sq.get_area() + expected = 25 + self.assertEqual(actual, expected, 'Expected area of square to be 25') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_perimeter()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_perimeter(self): + actual = self.rect.get_perimeter() + expected = 18 + self.assertEqual(actual, expected, 'Expected perimeter of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_perimeter()` should return `20`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_perimeter(self): + actual = self.sq.get_perimeter() + expected = 20 + self.assertEqual(actual, expected, 'Expected perimeter of square to be 20') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_diagonal()` should return `6.708203932499369`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_diagonal(self): + actual = self.rect.get_diagonal() + expected = 6.708203932499369 + self.assertEqual(actual, expected, 'Expected diagonal of rectangle to be 6.708203932499369') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_diagonal()` should return `7.0710678118654755`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_diagonal(self): + actual = self.sq.get_diagonal() + expected = 7.0710678118654755 + self.assertEqual(actual, expected, 'Expected diagonal of square to be 7.0710678118654755') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Rectangle` class should have a different string representation after setting new values. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_set_attributes(self): + self.rect.set_width(7) + self.rect.set_height(8) + actual = str(self.rect) + expected = "Rectangle(width=7, height=8)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle after setting new values to be "Rectangle(width=7, height=8)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_side()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_side(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_width()` or `set_height()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_height(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') + self.sq.set_width(4) + actual = str(self.sq) + expected = "Square(side=4)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting width to be "Square(side=4)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Rectangle` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_picture(self): + self.rect.set_width(7) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "*******\\n*******\\n*******\\n" + self.assertEqual(actual, expected, 'Expected rectangle picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Square` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_picture(self): + self.sq.set_side(2) + actual = self.sq.get_picture() + expected = "**\\n**\\n" + self.assertEqual(actual, expected, 'Expected square picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return the string `Too big for picture.` if the `width` or `height` attributes are larger than `50`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_big_picture(self): + self.rect.set_width(51) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "Too big for picture." + self.assertEqual(actual, expected, 'Expected message: "Too big for picture."') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(15,10).get_amount_inside(Square(5))` should return `6`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + self.sq = shape_calculator.Square(5) + + def test_get_amount_inside(self): + self.rect.set_height(10) + self.rect.set_width(15) + actual = self.rect.get_amount_inside(self.sq) + expected = 6 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 6.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(4,8).get_amount_inside(Rectangle(3, 6))` should return `1`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_two_rectangles(self): + rect2 = shape_calculator.Rectangle(4, 8) + actual = rect2.get_amount_inside(self.rect) + expected = 1 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 1.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(2,3).get_amount_inside(Rectangle(3, 6))` should return `0`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_none(self): + rect2 = shape_calculator.Rectangle(2, 3) + actual = rect2.get_amount_inside(self.rect) + expected = 0 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 0.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Rectangle: + pass + +class Square: + pass +``` + +# --solutions-- + +```py +class Rectangle: + def __init__(self, width, height): + self.width = width + self.height = height + + def __str__(self): + return f'Rectangle(width={self.width}, height={self.height})' + + def set_width(self, width): + self.width = width + + def set_height(self, height): + self.height = height + + def get_area(self): + area = self.width * self.height + return area + + def get_perimeter(self): + perimeter = self.width * 2 + self.height * 2 + return perimeter + + def get_diagonal(self): + diagonal = (self.width ** 2 + self.height ** 2) ** 0.5 + return diagonal + + def get_picture(self): + if self.width < 50 and self.height < 50: + picture = f'{"*"*self.width}\n'*self.height + return picture + else: + return 'Too big for picture.' + + def get_amount_inside(self, polygon): + h_number = self.height // polygon.height + w_number = self.width // polygon.width + repetition = h_number * w_number + return repetition + + +class Square(Rectangle): + def __init__(self, side): + self.width = side + self.height = side + + def __str__(self): + return f'Square(side={self.width})' + + def set_width(self, side): + self.width = side + self.height = side + + def set_height(self, side): + self.height = side + self.width = side + + def set_side(self,side): + self.width = side + self.height = side + +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md b/curriculum/challenges/korean/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md new file mode 100644 index 00000000000..94cf5c682de --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md @@ -0,0 +1,300 @@ +--- +id: 5e44414f903586ffb414c950 +title: Build a Probability Calculator Project +challengeType: 23 +forumTopicId: 462364 +dashedName: build-a-probability-calculator-project +--- + +# --description-- + +Suppose there is a hat containing 5 blue balls, 4 red balls, and 2 green balls. What is the probability that a random draw of 4 balls will contain at least 1 red ball and 2 green balls? While it would be possible to calculate the probability using advanced mathematics, an easier way is to write a program to perform a large number of experiments to estimate an approximate probability. + +For this project, you will write a program to determine the approximate probability of drawing certain balls randomly from a hat. + +First, create a `Hat` class in `main.py`. The class should take a variable number of arguments that specify the number of balls of each color that are in the hat. For example, a class object could be created in any of these ways: + +```py +hat1 = Hat(yellow=3, blue=2, green=6) +hat2 = Hat(red=5, orange=4) +hat3 = Hat(red=5, orange=4, black=1, blue=0, pink=2, striped=9) +``` + +A hat will always be created with at least one ball. The arguments passed into the hat object upon creation should be converted to a `contents` instance variable. `contents` should be a list of strings containing one item for each ball in the hat. Each item in the list should be a color name representing a single ball of that color. For example, if your hat is `{"red": 2, "blue": 1}`, `contents` should be `["red", "red", "blue"]`. + +The `Hat` class should have a `draw` method that accepts an argument indicating the number of balls to draw from the hat. This method should remove balls at random from `contents` and return those balls as a list of strings. The balls should not go back into the hat during the draw, similar to an urn experiment without replacement. If the number of balls to draw exceeds the available quantity, return all the balls. + +Next, create an `experiment` function in `main.py` (not inside the `Hat` class). This function should accept the following arguments: + +- `hat`: A hat object containing balls that should be copied inside the function. +- `expected_balls`: An object indicating the exact group of balls to attempt to draw from the hat for the experiment. For example, to determine the probability of drawing 2 blue balls and 1 red ball from the hat, set `expected_balls` to `{"blue":2, "red":1}`. +- `num_balls_drawn`: The number of balls to draw out of the hat in each experiment. +- `num_experiments`: The number of experiments to perform. (The more experiments performed, the more accurate the approximate probability will be.) + +The `experiment` function should return a probability. + +For example, if you want to determine the probability of getting at least two red balls and one green ball when you draw five balls from a hat containing six black, four red, and three green. To do this, you will perform `N` experiments, count how many times `M` you get at least two red balls and one green ball, and estimate the probability as `M/N`. Each experiment consists of starting with a hat containing the specified balls, drawing several balls, and checking if you got the balls you were attempting to draw. + +Here is how you would call the `experiment` function based on the example above with 2000 experiments: + +```py +hat = Hat(black=6, red=4, green=3) +probability = experiment(hat=hat, + expected_balls={"red":2,"green":1}, + num_balls_drawn=5, + num_experiments=2000) +``` + +The output would be something like this: + +```bash +0.356 +``` + +Since this is based on random draws, the probability will be slightly different each time the code is run. + +_Hint: Consider using the modules that are already imported at the top. Do not initialize random seed within the file._ + + +# --hints-- + +Creation of `hat` object should add correct contents. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_class_contents(self): + hat = probability_calculator.Hat(red=3,blue=2) + actual = hat.contents + expected = ["red","red","red","blue","blue"] + self.assertEqual(actual, expected, 'Expected creation of hat object to add correct contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method in `hat` class should reduce number of items in contents. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw(self): + hat = probability_calculator.Hat(red=5,blue=2) + actual = hat.draw(2) + expected = ['blue', 'red'] + self.assertEqual(actual, expected, 'Expected hat draw to return two random items from hat contents.') + actual = len(hat.contents) + expected = 5 + self.assertEqual(actual, expected, 'Expected hat draw to reduce number of items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method should behave correctly when the number of balls to extract is bigger than the number of balls in the hat. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw_2(self): + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + actual = hat.draw(20) + expected = ['yellow', 'yellow', 'yellow', 'yellow', 'yellow', 'red', 'green', 'green', 'green', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'test'] + self.assertEqual(actual, expected, 'Expected hat draw to return all items from hat contents.') + actual = len(hat.contents) + expected = 0 + self.assertEqual(actual, expected, 'Expected hat draw to leave no items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `experiment` method should return a different probability. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_prob_experiment(self): + hat = probability_calculator.Hat(blue=3,red=2,green=6) + probability = probability_calculator.experiment(hat=hat, expected_balls={"blue":2,"green":1}, num_balls_drawn=4, num_experiments=1000) + actual = probability + expected = 0.272 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + probability = probability_calculator.experiment(hat=hat, expected_balls={"yellow":2,"blue":3,"test":1}, num_balls_drawn=20, num_experiments=100) + actual = probability + expected = 1.0 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +# --seed-- + +## --seed-contents-- + +```py +import copy +import random + +class Hat: + pass + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + pass +``` + +# --solutions-- + +```py +import copy +import random + +class Hat: + def __init__(self, **hat): + self.hat = hat + contents = [] + for i in hat: + for j in range(hat[i]): + contents.append(i) + self.contents = contents + + + def draw(self, number): + drawn = [] + if number >= len(self.contents): + drawn.extend(self.contents) + self.contents = [] + else: + for i in range(number): + drawn.append( + self.contents.pop(random.randrange(len(self.contents))) + ) + return drawn + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + expected_balls_list = [] + drawn_list = [] + success = 0 + for i in expected_balls: + for j in range(expected_balls[i]): + expected_balls_list.append(i) + for j in range(num_experiments): + hat_copy = copy.deepcopy(hat) + drawn_list.append(hat_copy.draw(num_balls_drawn)) + exp_ball_list_copy = expected_balls_list[:] + for k in range(len(drawn_list[j])): + try: + ind = exp_ball_list_copy.index(drawn_list[j][k]) + exp_ball_list_copy.pop(ind) + except: + continue + if len(exp_ball_list_copy) == 0: + success += 1 + probability = success/num_experiments + return probability +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md b/curriculum/challenges/korean/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md new file mode 100644 index 00000000000..05e60f0b74a --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md @@ -0,0 +1,582 @@ +--- +id: 5e444136903586ffb414c94d +title: Build a Time Calculator Project +challengeType: 23 +forumTopicId: 462360 +dashedName: build-a-time-calculator-project +--- + +# --description-- + +Write a function named `add_time` that takes in two required parameters and one optional parameter: + +- a start time in the 12-hour clock format (ending in AM or PM) +- a duration time that indicates the number of hours and minutes +- (optional) a starting day of the week, case insensitive + +The function should add the duration time to the start time and return the result. + +If the result will be the next day, it should show `(next day)` after the time. If the result will be more than one day later, it should show `(n days later)` after the time, where "n" is the number of days later. + +If the function is given the optional starting day of the week parameter, then the output should display the day of the week of the result. The day of the week in the output should appear after the time and before the number of days later. + +Below are some examples of different cases the function should handle. Pay close attention to the spacing and punctuation of the results. + +```py +add_time('3:00 PM', '3:10') +# Returns: 6:10 PM + +add_time('11:30 AM', '2:32', 'Monday') +# Returns: 2:02 PM, Monday + +add_time('11:43 AM', '00:20') +# Returns: 12:03 PM + +add_time('10:10 PM', '3:30') +# Returns: 1:40 AM (next day) + +add_time('11:43 PM', '24:20', 'tueSday') +# Returns: 12:03 AM, Thursday (2 days later) + +add_time('6:30 PM', '205:12') +# Returns: 7:42 AM (9 days later) +``` + +Do not import any Python libraries. Assume that the start times are valid times. The minutes in the duration time will be a whole number less than 60, but the hour can be any whole number. + +# --hints-- +Calling `add_time('3:30 PM', '2:12')` should return `'5:42 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +import time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period(self): + actual = time_calculator.add_time("3:30 PM", "2:12") + expected = "5:42 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12" to return "5:42 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:55 AM', '3:12')` should return `'3:07 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_different_period(self): + actual = time_calculator.add_time("11:55 AM", "3:12") + expected = "3:07 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:55 AM", "3:12" to return "3:07 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected time to end with `'(next day)'` when it is the next day. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_next_day(self): + actual = time_calculator.add_time("9:15 PM", "5:30") + expected = "2:45 AM (next day)" + self.assertEqual(actual, expected, 'Expected time to end with "(next day)" when it is the next day.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected period to change from `AM` to `PM` at `12:00`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_period_change_at_twelve(self): + actual = time_calculator.add_time("11:40 AM", "0:25") + expected = "12:05 PM" + self.assertEqual(actual, expected, 'Expected period to change from AM to PM at 12:00') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00')` should return `'2:59 AM (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four(self): + actual = time_calculator.add_time("2:59 AM", "24:00") + expected = "2:59 AM (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00" to return "2:59 AM (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05')` should return `'12:04 AM (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later(self): + actual = time_calculator.add_time("11:59 PM", "24:05") + expected = "12:04 AM (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05" to return "12:04 AM (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02')` should return `'6:18 AM (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration(self): + actual = time_calculator.add_time("8:16 PM", "466:02") + expected = "6:18 AM (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02" to return "6:18 AM (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected adding `0:00` to return the initial time. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_no_change(self): + actual = time_calculator.add_time("5:01 AM", "0:00") + expected = "5:01 AM" + self.assertEqual(actual, expected, 'Expected adding 0:00 to return initial time.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('3:30 PM', '2:12', 'Monday')`should return `'5:42 PM, Monday'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period_with_day(self): + actual = time_calculator.add_time("3:30 PM", "2:12", "Monday") + expected = "5:42 PM, Monday" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12", "Monday" to return "5:42 PM, Monday"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00', 'saturDay')` should return `'2:59 AM, Sunday (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four_with_day(self): + actual = time_calculator.add_time("2:59 AM", "24:00", "saturDay") + expected = "2:59 AM, Sunday (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00", "saturDay" to return "2:59 AM, Sunday (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05', 'Wednesday')` should return `'12:04 AM, Friday (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later_with_day(self): + actual = time_calculator.add_time("11:59 PM", "24:05", "Wednesday") + expected = "12:04 AM, Friday (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05", "Wednesday" to return "12:04 AM, Friday (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02', 'tuesday')`should return `'6:18 AM, Monday (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration_with_day(self): + actual = time_calculator.add_time("8:16 PM", "466:02", "tuesday") + expected = "6:18 AM, Monday (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02", "tuesday" to return "6:18 AM, Monday (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def add_time(start, duration): + + + + + + return new_time +``` + +# --solutions-- + +```py +def add_time(start, duration, day=''): + start_arr = start[0:-3].split(':') + dur_arr = duration.split(':') + tail = '' + # converting to 24h format + if 'AM' in start: + if start_arr[0] == '12': + start_arr[0] = '00' + elif 'PM' in start: + if start_arr[0] == '12': + start_arr[0] = '12' + else: + start_arr[0] = f'{int(start_arr[0]) + 12}' + + # adding minutes + sum_m = int(start_arr[1]) + int(dur_arr[1]) + if sum_m > 59: + + if (sum_m - 60 * (sum_m//60)) < 10: + mins = f'0{(sum_m - 60 * (sum_m//60))}' + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + + else: + mins = sum_m - 60 * (sum_m//60) + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + else: + if sum_m < 10: + mins = f'0{sum_m}' + else: + mins = sum_m + + #adding hours + sum_h = int(start_arr[0]) + int(dur_arr[0]) + if sum_h < 24: + hours= sum_h + #time_24 = f'{hours}:{mins}' + else: + days_after = sum_h//24 + if days_after == 1: + hours = sum_h - 24 + tail = ' (next day)' + else: + hours = sum_h - 24 * days_after + tail = f' ({days_after} days later)' + + #converting back to AM/PM + if hours == 0: + hours = 12 + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + elif hours < 12: + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + else: + if hours > 12: + hours = hours - 12 + time = f'{hours}:{mins} PM' + final_time = f'{time}{tail}' + + #days of the week + week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] + if day: + day = day.capitalize() + if not tail: + final_time = f'{time}, {day}' + elif tail == ' (next day)': + index = week.index(day) + 1 + if index == 7: + index = 0 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + elif tail: + index = (week.index(day) + days_after) % 7 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + + + print('\n') + print(final_time) + print('\n') + return final_time + +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md b/curriculum/challenges/korean/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md new file mode 100644 index 00000000000..4f112fd73c5 --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md @@ -0,0 +1,248 @@ +--- +id: 5e44412c903586ffb414c94c +title: Build an Arithmetic Formatter Project +challengeType: 23 +forumTopicId: 462359 +dashedName: build-an-arithmetic-formatter-project +--- + +# --description-- + +Students in primary school often arrange arithmetic problems vertically to make them easier to solve. For example, "235 + 52" becomes: + +```py + 235 ++ 52 +----- +``` + +Finish the `arithmetic_arranger` function that receives a list of strings which are arithmetic problems, and returns the problems arranged vertically and side-by-side. The function should optionally take a second argument. When the second argument is set to `True`, the answers should be displayed. + +## Example + +Function Call: + +```py +arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"]) +``` + +Output: + +```py + 32 3801 45 123 ++ 698 - 2 + 43 + 49 +----- ------ ---- ----- +``` + +Function Call: + +```py +arithmetic_arranger(["32 + 8", "1 - 3801", "9999 + 9999", "523 - 49"], True) +``` + +Output: + +```py + 32 1 9999 523 ++ 8 - 3801 + 9999 - 49 +---- ------ ------ ----- + 40 -3800 19998 474 +``` + +## Rules + +The function will return the correct conversion if the supplied problems are properly formatted, otherwise, it will **return** a **string** that describes an error that is meaningful to the user. + +- Situations that will return an error: + - If there are **too many problems** supplied to the function. The limit is **five**, anything more will return: `'Error: Too many problems.'` + - The appropriate operators the function will accept are **addition** and **subtraction**. Multiplication and division will return an error. Other operators not mentioned in this bullet point will not need to be tested. The error returned will be: `"Error: Operator must be '+' or '-'."` + - Each number (operand) should only contain digits. Otherwise, the function will return: `'Error: Numbers must only contain digits.'` + - Each operand (aka number on each side of the operator) has a max of four digits in width. Otherwise, the error string returned will be: `'Error: Numbers cannot be more than four digits.'` +- If the user supplied the correct format of problems, the conversion you return will follow these rules: + - There should be a single space between the operator and the longest of the two operands, the operator will be on the same line as the second operand, both operands will be in the same order as provided (the first will be the top one and the second will be the bottom). + - Numbers should be right-aligned. + - There should be four spaces between each problem. + - There should be dashes at the bottom of each problem. The dashes should run along the entire length of each problem individually. (The example above shows what this should look like.) + +# --hints-- + +`arithmetic_arranger(["3801 - 2", "123 + 49"])` should return `3801 123\n- 2 + 49\n------ -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3801 - 2", "123 + 49"]), ' 3801 123\\n- 2 + 49\\n------ -----')`); + } +}) +``` + +`arithmetic_arranger(["1 + 2", "1 - 9380"])` should return `1 1\n+ 2 - 9380\n--- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["1 + 2", "1 - 9380"]), ' 1 1\\n+ 2 - 9380\\n--- ------')`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `3 3801 45 123\n+ 855 - 2 + 43 + 49\n----- ------ ---- -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]), ' 3 3801 45 123\\n+ 855 - 2 + 43 + 49\\n----- ------ ---- -----')`); + } +}) +``` + +`arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"])` should return `11 3801 1 123 1\n+ 4 - 2999 + 2 + 49 - 9380\n---- ------ --- ----- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"]), ' 11 3801 1 123 1\\n+ 4 - 2999 + 2 + 49 - 9380\\n---- ------ --- ----- ------')`); + } +}) +``` + +`arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"])` should return `'Error: Too many problems.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"]), 'Error: Too many problems.')`); + } +}) +``` + +`arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `"Error: Operator must be '+' or '-'."`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Operator must be '+' or '-'.")`); + } +}) +``` + +`arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers cannot be more than four digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers cannot be more than four digits.")`); + } +}) +``` + +`arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers must only contain digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers must only contain digits.")`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "988 + 40"], True)` should return `3 988\n+ 855 + 40\n----- -----\n 858 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "988 + 40"], True), " 3 988\\n+ 855 + 40\\n----- -----\\n 858 1028")`); + } +}) +``` + +`arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True)` should return `32 1 45 123 988\n- 698 - 3801 + 43 + 49 + 40\n----- ------ ---- ----- -----\n -666 -3800 88 172 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True), " 32 1 45 123 988\\n- 698 - 3801 + 43 + 49 + 40\\n----- ------ ---- ----- -----\\n -666 -3800 88 172 1028")`); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def arithmetic_arranger(problems, show_answers=False): + + return problems + +print(f'\n{arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"])}') +``` + +# --solutions-- + +```py +def arithmetic_arranger(problems, result=False): + + lin1 = "" + lin2 = "" + lin3 = "" + lin4 = "" + + if len(problems) > 5: + return 'Error: Too many problems.' + for problem in problems: + [num1, sym, num2] = problem.split() + sign = ['+', '-'] + if sym not in sign: + return ("Error: Operator must be '+' or '-'.") + if len(num1) > 4 or len(num2) > 4: + return ("Error: Numbers cannot be more than four digits.") + if not num1.isnumeric() or not num2.isnumeric(): + return ("Error: Numbers must only contain digits.") + + lin1 += " " + num1 + " " if len(num1) >= len( + num2) else " " * (len(num2) + 2 - len(num1)) + num1 + " " + lin2 += sym + " " + num2 + " " if len(num2) >= len( + num1) else sym + " " * (len(num1) - len(num2) + 1) + num2 + " " + nmax = (len(num1) + 2) if len(num1) >= len(num2) else (len(num2) + 2) + lin3 += "-" * nmax + " " + op = int(num1) + int(num2) if sym == "+" else int(num1) - int(num2) + lin4 += (" " * (nmax - len(str(op)))) + str(op) + " " + + arranged_problems = lin1.rstrip() + "\n" + lin2.rstrip( + ) + "\n" + lin3.rstrip() + if result: + arranged_problems += "\n" + lin4.rstrip() + + return arranged_problems +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md index 2a7bb37224d..6b0cf8c63de 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md @@ -23,7 +23,7 @@ Add a new key-value pair to your dictionary. Use the string `species` as the key You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 1 `)) }) @@ -32,7 +32,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have a `species` key with the value `guinea pig` inside your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig"} `)) }) diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md index 4ed1a1b61e2..69edb77063f 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md @@ -14,7 +14,7 @@ Now, replace the existent keys with the strings `A` and `B` — one for each nod Your dictionary should have an `A` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "A" in my_graph `)) }) @@ -23,7 +23,7 @@ Your dictionary should have an `A` key. Your `A` key should have `B` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -32,7 +32,7 @@ Your `A` key should have `B` as the value. Your dictionary should have an `B` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "B" in my_graph `)) }) @@ -41,7 +41,7 @@ Your dictionary should have an `B` key. Your `B` key should have `A` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["B"] == "A" `)) }) @@ -50,7 +50,7 @@ Your `B` key should have `A` as the value. Your dictionary should have two keys. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph) == 2 `)) }) diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md index 30eb86359cf..aad91960c07 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md @@ -16,7 +16,7 @@ Modify your existing dictionary to represent this arrangement. Use a list to rep Your dictionary should have 3 keys — `A`, `B`, and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C"] len(my_graph) == 3 and all(key in my_graph for key in key_list) `)) @@ -26,7 +26,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["A"]` should have the `B` node as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -35,7 +35,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -44,7 +44,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. The value of `my_graph["B"]` should be a list containing the other two nodes. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -53,7 +53,7 @@ The value of `my_graph["B"]` should be a list containing the other two nodes. The value of `my_graph["C"]` should be the connected node. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["C"] == "B" `)) }) diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md index 5f036d03199..5d34b32984c 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md @@ -14,7 +14,7 @@ Add one last node, `D`, which is connected with `A` and `C`. Modify your diction Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -24,7 +24,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list `)) }) @@ -33,7 +33,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["A"]) == 2 and "B" in my_graph["A"] and "D" in my_graph["A"] `)) }) @@ -42,7 +42,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -51,7 +51,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -60,7 +60,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list `)) }) @@ -69,7 +69,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["C"]) == 2 and "B" in my_graph["C"] and "D" in my_graph["C"] `)) }) @@ -78,7 +78,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list `)) }) @@ -87,7 +87,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["D"]) == 2 and "A" in my_graph["D"] and "C" in my_graph["D"] `)) }) diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md index 684d8ad5bfe..dc3cf579a92 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md @@ -27,7 +27,7 @@ Modify `my_graph["A"]` into a list of tuples, considering the following distance Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -37,7 +37,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list and all(type(i) is tuple for i in my_graph["A"]) `)) }) @@ -46,7 +46,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 3), ("D", 1)] len(my_graph["A"]) == 2 and all(t in my_graph["A"] for t in tuples) `)) diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md index d8058c5e3bd..a33c4b2f57f 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md @@ -16,7 +16,7 @@ Declare an empty function called `shortest_path` and don't forget the `pass` key You should have a `shortest_path` function. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect inspect.isfunction(shortest_path) `)) diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md index 52e613f38d1..d36a0b80c00 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md @@ -16,7 +16,7 @@ For that your function needs two parameters: `graph`, and `start`. Add them to y Your function should accept `graph` and `start` as the parameters, in this order. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == '(graph, start)' diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md index 4bd27a113da..63132e29106 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md @@ -22,7 +22,7 @@ Your function should take three parameters:`graph`, `start`, and `target`. The o The `target` parameter should have the default value of an empty string. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == "(graph, start, target='')" diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md index e4b308791e5..f7f4f834e4d 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md @@ -14,7 +14,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list and all(type(i) is tuple for i in my_graph["B"]) `)) }) @@ -23,7 +23,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 3), ("C", 4)] len(my_graph["B"]) == 2 and all(t in my_graph["B"] for t in tuples) `)) diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md index 47c592c584c..fa3b90b95ea 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md @@ -14,7 +14,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list and all(type(i) is tuple for i in my_graph["C"]) `)) }) @@ -23,7 +23,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 4), ("D", 7)] len(my_graph["C"]) == 2 and all(t in my_graph["C"] for t in tuples) `)) @@ -33,7 +33,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list and all(type(i) is tuple for i in my_graph["D"]) `)) }) @@ -42,7 +42,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 1), ("C", 7)] len(my_graph["D"]) == 2 and all(t in my_graph["D"] for t in tuples) `)) diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md index a219cc22675..6a59b35a6de 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md @@ -25,7 +25,7 @@ Now, you are going to test your function with another graph. Change `my_graph` i You should modify `my_graph` into the provided graph. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` g = { 'A': [('B', 5), ('C', 3), ('E', 11)], 'B': [('A', 5), ('C', 1), ('F', 2)], diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md index 6632b6afc90..62db4d83c18 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md @@ -27,7 +27,7 @@ You should have a variable called `copper`. Your `copper` variable should have the value of an empty dictionary. Use a pair of curly braces for that. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {} `)) }) diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md index d54773ceaea..0a6d148a90b 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md @@ -16,7 +16,7 @@ Add another key `age` to your dictionary and give it the integer number `2` as v You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 2 `)) }) @@ -25,7 +25,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have an `age` key with the value `2` just after `'species': 'guinea pig'`, inside your `copper` dictionary. Don't forget the comma. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md index 018c73c658d..4edd91c31c6 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md @@ -25,7 +25,7 @@ After your dictionary, follow the example above to access the `species` key of ` You should not modify your dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md index dfa2eda2191..6a900a9bcbd 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md @@ -24,7 +24,7 @@ You should rename your `copper` dictionary into `my_graph`. Your `my_graph` variable should be a dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph) is dict `)) }) diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md index 45e506b1225..ed9428a0289 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md @@ -16,7 +16,7 @@ Your `merge_sort` function should take a single parameter: `array`. ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('merge_sort'))) == '(array)' + str(inspect.signature(merge_sort)) == '(array)' `)) }) ``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md index 8bb4030b3db..4a3f46f27b3 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md @@ -19,13 +19,9 @@ You should create an `if` statement to check if `len(array) <= 1`. Don't forget ```js ({ - test: () => { - const transformedCode = code.replace(/\r/g, ""); - const merge_sort = __helpers.python.getDef("\n" + transformedCode, "merge_sort"); - const { function_body } = merge_sort; - - assert.match(function_body, /if\s+len\(\s*array\s*\)\s*<=\s*1:\s*pass/); - } + test: () => assert(runPython(` + _Node(_code).find_function("merge_sort").find_ifs()[0].find_conditions()[0].is_equivalent("len(array) <= 1") + `)) }) ``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md index d05b37ba120..aa561b27617 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md @@ -22,13 +22,11 @@ Use the `pass` keyword in the body of the `if` statement. Your `if` statement should check if `__name__` has a value of `'__main__'` ```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:/); -``` - -You should have the `pass` keyword in the body of your `if` statement - -```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:\s*[^}]*\bpass\b/); +({ + test: () => assert(runPython(` + _Node(_code).find_ifs()[0].find_conditions()[0].is_equivalent("__name__ == '__main__'") + `)) +}) ``` # --seed-- diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md index 5b6dd5fa938..4b9a29ec2e2 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md @@ -25,7 +25,6 @@ Your `rods` variable should be an empty dictionary. ```js ({ test: () => assert(runPython(` - rods = __locals.get("rods") rods == {} `)) }) diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md index d41145c8c00..aa1d7bf2e00 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md @@ -19,8 +19,7 @@ You should use the `range()` function to assign a sequence of numbers to `rods[' ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - type(a['A']) is range + type(rods['A']) is range `)) }) ``` @@ -29,8 +28,7 @@ You should use the `range()` function to assign the sequence of numbers from `3` ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == range(3, 0, -1) + rods['A'] == range(3, 0, -1) `)) }) ``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md index 39828c89e7b..f69c410324b 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md @@ -17,8 +17,7 @@ You should pass your `range()` call to the `list()` function. ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == list(range(3, 0, -1)) + rods['A'] == list(range(3, 0, -1)) `)) }) ``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md index db6440d97e4..b1c96dc5c07 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md @@ -23,7 +23,7 @@ You should declare an empty function named `move`. Remember to use the `pass` ke ({ test: () => { assert(runPython(` import inspect - inspect.isfunction(__locals.get('move')) + inspect.isfunction(move) `)) } }) diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md index 57451f1fbac..85a7523ffbe 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md @@ -23,9 +23,8 @@ The value of `number_of_moves` should be the expression to calculate the number ```js ({ test: () => { - assert(runPython(` - a = __locals.get('NUMBER_OF_DISKS') - __locals.get('number_of_moves') == 2**a -1 + assert(runPython(` + number_of_moves == 2**NUMBER_OF_DISKS -1 `)) } }) ``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md index 9b0e1c89294..02bdfb90e2d 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md @@ -16,7 +16,7 @@ You should declare an empty function named `make_allowed_move`. Remember to use ```js ({ test: () => assert(runPython(` import inspect - inspect.isfunction(__locals.get('make_allowed_move')) + inspect.isfunction(make_allowed_move) `)) }) ``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md index 73066f08a25..e21a47752f7 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md @@ -16,7 +16,7 @@ Your `make_allowed_move()` function should have two parameters named `rod1` and ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('make_allowed_move'))) == '(rod1, rod2)' + str(inspect.signature(make_allowed_move)) == '(rod1, rod2)' `)) }) ``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md index e884811d858..ef88aaf81b9 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md @@ -14,16 +14,14 @@ The `rods` dictionary will represent the three rods with their disks. Give it th Your `rods` dictionary should have an `'A'` key. ```js -({ test: () => assert(runPython(`'A' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'A' in rods`)) }) ``` `rods['A']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['A'] == [] + rods['A'] == [] `)) }) ``` @@ -31,16 +29,14 @@ Your `rods` dictionary should have an `'A'` key. Your `rods` dictionary should have a `'B'` key. ```js -({ test: () => assert(runPython(`'B' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'B' in rods`)) }) ``` `rods['B']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['B'] == [] + rods['B'] == [] `)) }) ``` @@ -48,16 +44,14 @@ Your `rods` dictionary should have a `'B'` key. Your `rods` dictionary should have a `'C'` key. ```js -({ test: () => assert(runPython(`'C' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'C' in rods`)) }) ``` `rods['C']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['C'] == [] + rods['C'] == [] `)) }) ``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md index a28ac44f33f..9ae2af92408 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md @@ -22,7 +22,7 @@ Your `move()` function should have `n`, `source`, `auxiliary`, and `target` as t ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('move'))) == '(n, source, auxiliary, target)' + str(inspect.signature(move)) == '(n, source, auxiliary, target)' `)) }) ``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md index cc7151ee423..90dc8fa8a83 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md @@ -17,9 +17,8 @@ You should reduce the indentation level of all the code after the `return` state ```js ({ test: () => assert(runPython(` - hanoi = __locals.get("move") a, b, c = [3, 2, 1], [], [] - hanoi(3, a, b, c) + move(3, a, b, c) a == [] and b == [] and c == [3, 2, 1] `)) }) diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md index 16e7b5b68ed..00efcbb8726 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md @@ -23,9 +23,8 @@ You should add `direction` as the third parameter of your function. ```js ({ test: () => assert(runPython(` - import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + import inspect + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction)' `)) }) diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md index 74562ae26a5..d19dc6dbe27 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md @@ -24,8 +24,7 @@ You should declare a new function called `encrypt`. Remember to use the `pass` k ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - inspect.isfunction(f) + inspect.isfunction(encrypt) `)) }) ``` @@ -35,8 +34,7 @@ Your `encrypt` function should take `message` and `key` as the parameters. The o ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - sig = inspect.signature(f) + sig = inspect.signature(encrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md index fa091717efb..b7357c63760 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md @@ -16,8 +16,7 @@ You should define a new function called `decrypt`. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - inspect.isfunction(f) + inspect.isfunction(decrypt) `)) }) ``` @@ -27,8 +26,7 @@ Your `decrypt` function should take `message` and `key` as the parameters. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - sig = inspect.signature(f) + sig = inspect.signature(decrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md index 19fcb7ee6a3..f719d77790e 100644 --- a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md @@ -23,8 +23,7 @@ The `direction` parameter of your `vigenere` function should have a default valu ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction=1)' `)) }) diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md new file mode 100644 index 00000000000..733f024fa29 --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md @@ -0,0 +1,39 @@ +--- +id: 65ef181dad3d96b14a21a03e +title: Step 1 +challengeType: 20 +dashedName: step-1 +--- + +# --description-- + +In this project, you will find the approximate square root of a given number using the bisection method. + +The bisection method is a technique for finding the roots of a real-valued function. It works by narrowing down an interval where the square root lies until it converges to a value within a specified tolerance. + +Begin by creating a function named `square_root_bisection`. Leave the parameters empty for now. + +# --hints-- + +You should define the function `square_root_bisection` with no parameters. + +```js +({ + test: () => { + assert(runPython(` + import inspect + inspect.isfunction(square_root_bisection) + `)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md new file mode 100644 index 00000000000..f5091e5a2c6 --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md @@ -0,0 +1,38 @@ +--- +id: 65ef190c6b51e9b5a5f7ed29 +title: Step 2 +challengeType: 20 +dashedName: step-2 +--- + +# --description-- + +Give the `square_root_bisection` method the following parameters: + +- `square_target`: The number for which you want to find the square root. +- `tolerance` (optional): The acceptable difference between the square of the approximate root value and the actual target value (default is `1e-7`). The tolerance `1e-7` implies that the solution will be accurate to within `0.0000001` of the true value and is a good default choice that balances accuracy and performance. +- `max_iterations` (optional): The maximum number of iterations to perform (default is `100`). If the method doesn't converge within this limit, you'll assume the solution is not found. + +# --hints-- + +Your function should have these parameters: `square_target`, `tolerance = 1e-7`, and `max_iterations = 100`. The order matters. + +```js +({ + test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").has_args("square_target, tolerance=1e-7, max_iterations=100")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py + +--fcc-editable-region-- +def square_root_bisection(): + pass +--fcc-editable-region-- + +``` + diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md new file mode 100644 index 00000000000..77628582774 --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md @@ -0,0 +1,46 @@ +--- +id: 65ef19425d1b27b6c930bae6 +title: Step 3 +challengeType: 20 +dashedName: step-3 +--- + +# --description-- + +If the number for which you want to find the square root is negative, the code should raise an error as the square root of a negative number is not defined in real numbers. + +Remove the `pass` statement and create an `if` statement to check if `square_target` is less than `0`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").has_pass()`)) + } +}) +``` + +You should create an `if` statement to check if `square_target < 0`. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_if("square_target < 0").is_empty()`)) + + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance = 1e-7, max_iterations = 100): + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md new file mode 100644 index 00000000000..20f407dfd2a --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md @@ -0,0 +1,46 @@ +--- +id: 65ef198fde24dfb7ff675b42 +title: Step 4 +challengeType: 20 +dashedName: step-4 +--- + +# --description-- + +If the `square_target` is less than `0`, raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'`. Don't forget to remove the `pass` keyword. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'` inside the `if` body. + +```js +({ + test: () => { + + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].is_equivalent("raise ValueError('Square root of negative number is not defined in real numbers')")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md new file mode 100644 index 00000000000..f31f83a0ed3 --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md @@ -0,0 +1,38 @@ +--- +id: 65ef19ec318e2fb9066381e3 +title: Step 5 +challengeType: 20 +dashedName: step-5 +--- + +# --description-- + +You'll create separate cases for when `square_target` is `0` or `1`. + +Begin by creating an `if` statement to check if `square_target` is equal to `1`. + +# --hints-- + +You should create an `if` statement to check that `square_target == 1`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[0].is_equivalent("square_target == 1")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md new file mode 100644 index 00000000000..927a215705a --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md @@ -0,0 +1,51 @@ +--- +id: 65ef1a1fcb527bba0ca82ccf +title: Step 6 +challengeType: 20 +dashedName: step-6 +--- + +# --description-- + +If the `square_target` is equal to `1`, declare a variable `root` and assign it the value `1` . Also, print the message `'The square root of {square_target} is 1'`. Remember to format the message using an f-string. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should assign the value `1` to the `root` variable and print the message `'The square root of {square_target} is 1'` inside the `if` body. + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].is_equivalent("root = 1\\nprint(f'The square root of {square_target} is 1')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md new file mode 100644 index 00000000000..9ba5f5b573f --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md @@ -0,0 +1,55 @@ +--- +id: 65ef1a50049cf9bada13266f +title: Step 7 +challengeType: 20 +dashedName: step-7 +--- + +# --description-- + +Create an `elif` statement to check if `square_target` is equal to `0`. If it is, assign the value `0` to the `root` variable. Also, print the message `'The square root of {square_target} is 0'`. Remember to format the message using an f-string. + +# --hints-- + +You should have an `elif` statement to check the condition `square_target == 0`. + + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[1].is_equivalent("square_target == 0")`)); + } +}) + +``` + +You should assign the value `0` to the `root` variable and pass the argument `f'The square root of {square_target} is 0'` to a `print` call. + + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[1].is_equivalent("root = 0\\nprint(f'The square root of {square_target} is 0')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md new file mode 100644 index 00000000000..0fb10817783 --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md @@ -0,0 +1,45 @@ +--- +id: 65ef1a720d6e65bbb0d22463 +title: Step 8 +challengeType: 20 +dashedName: step-8 +--- + +# --description-- +Next, you are going to work on the cases where the `square_target` is a positive number apart from `1` or `0`. + +Create an `else` clause to handle these cases. + +# --hints-- + +Create an `else` clause and do not forget to add a `pass` keyword. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[2] == _Node()`)) + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md new file mode 100644 index 00000000000..8f10c9990f1 --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md @@ -0,0 +1,73 @@ +--- +id: 65ef1aacca094bbcc2e2a3c8 +title: Step 9 +challengeType: 20 +dashedName: step-9 +--- + +# --description-- + +In Python, the `max()` function returns the largest of the input values. + +```python +max(1, 2, 3) # Output: 3 +``` + +The variables `low` and `high` will be used to define the initial interval where the square root lies. + +Inside the `else` clause, initialize the `low` variable to `0` and the `high` variable to be the maximum of either `1` or `square_target` as the square root of a number is always less than or equal to the number itself. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].has_pass()`)) + } +}) +``` + +You should declare a variable `low` and assign it `0`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("low").is_equivalent("low = 0")`)); } +}) + +``` + +You should declare a variable `high` and use the `max()` function to assign it the maximum value between `1` and `square_target`. + +```js + +({ test: () => assert(runPython(` +node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("high") +values = ["high = max(1, square_target)", "high = max(square_target, 1)"] +any(node.is_equivalent(val) for val in values) +`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md new file mode 100644 index 00000000000..6711973a758 --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md @@ -0,0 +1,46 @@ +--- +id: 65ef1afca9a8f6be0d4150ba +title: Step 10 +challengeType: 20 +dashedName: step-10 +--- + +# --description-- + +Set the value of `root` to `None` as at this point, you don't have an approximate value yet. + +# --hints-- + +The value of `root` should be `None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].is_equivalent("low = 0\\nhigh = max(1, square_target)\\nroot = None")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + low = 0 + high = max(1, square_target) + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md new file mode 100644 index 00000000000..69406d9fee2 --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md @@ -0,0 +1,51 @@ +--- +id: 65ef1be2b958cabf712296cd +title: Step 11 +challengeType: 20 +dashedName: step-11 +--- + +# --description-- + +Now you'll repeatedly narrow down the interval by finding the midpoint of the current interval and comparing the square of the midpoint with the target value. + +For that, inside the `else` block, create a `for` loop that runs up to `max_iterations` times. + +# --hints-- + +You should create a `for` loop to iterate over `range(max_iterations)`. Use `_` as the loop variable. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].is_equivalent("for _ in range(max_iterations):\\n pass")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md new file mode 100644 index 00000000000..e5efb88bafc --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md @@ -0,0 +1,78 @@ +--- +id: 65ef1c0a03fcabc04ded7e69 +title: Step 12 +challengeType: 20 +dashedName: step-12 +--- + +# --description-- + +Inside the for loop, calculate the midpoint of the interval ranging from `low` to `high`. Assign this value to a variable `mid`. + +Also, calculate the square of the midpoint (`mid`) and store it in the variable `square_mid`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].has_pass()`)) + + } + +}) + +``` + +You should declare a variable `mid` and assign it `(low + high) / 2` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(` + node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("mid") + values = ["mid = (low + high) / 2", "mid = (high + low) / 2"] + any(node.is_equivalent(val) for val in values) + `)) + + } + +}) +``` + +You should declare a variable `square_mid` and assign it `mid**2` inside the body of the for loop. + +```js +({ test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("square_mid").is_equivalent("square_mid = mid**2")`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md new file mode 100644 index 00000000000..f365f00475d --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md @@ -0,0 +1,53 @@ +--- +id: 65ef1c34a541afc12dbb849d +title: Step 13 +challengeType: 20 +dashedName: step-13 +--- + +# --description-- + +The `abs()` function returns the absolute value of a number, which is always positive, regardless of the number sign. You will use it to check that the estimated square root is close enough to the actual value. + +Now, create an `if` statement to check if the absolute value of the difference between `square_mid` and `square_target` is within the specified `tolerance`. + +# --hints-- + +You should have an `if` statement with the condition `abs(square_mid - square_target) < tolerance:` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[0].is_equivalent("abs(square_mid - square_target) < tolerance")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md new file mode 100644 index 00000000000..7c84ec9d7fe --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md @@ -0,0 +1,68 @@ +--- +id: 65ef1cb031de30c2cde64c12 +title: Step 14 +challengeType: 20 +dashedName: step-14 +--- + +# --description-- + +If the difference is within the specified `tolerance`, set the value of `root` to `mid` and break out of the loop. + +# --hints-- + +You should remove the existing `pass` statement. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].has_pass()`)) + } + +}) + +``` + +You should assign the value of `mid` to `root` and break out of the loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].is_equivalent("root = mid\\nbreak")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md new file mode 100644 index 00000000000..18a6767deab --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md @@ -0,0 +1,71 @@ +--- +id: 65ef1cda150a59c3b8306944 +title: Step 15 +challengeType: 20 +dashedName: step-15 +--- + +# --description-- + +If the difference is not within the specified `tolerance`, create an `elif` statement to check if `square_mid` is less than `square_target`. + +Assign the value of `mid` to `low` as the square root would now lie between `low` and `mid`. + +# --hints-- + +You should create an `elif` statement that checks if `square_mid < square_target`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[1].is_equivalent("square_mid < square_target")`)) + + } + +}) +``` + +You should assign the value of `mid` to `low`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[1].is_equivalent("low = mid")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md new file mode 100644 index 00000000000..06598491f2e --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md @@ -0,0 +1,70 @@ +--- +id: 65ef1d104c2be9c4d8e22075 +title: Step 16 +challengeType: 20 +dashedName: step-16 +--- + +# --description-- + +If both the `if` and `elif` conditions are not met, the value of `mid` would be greater than `square_target`. In this case, create an `else` clause and assign the value of `mid` to `high`. + +# --hints-- + +You should have an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[2]== _Node()`)); + } +}) + +``` + +You should assign the value of `mid` to `high` in the `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[2].is_equivalent("high = mid")`)); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- + elif square_mid < square_target: + low = mid + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md new file mode 100644 index 00000000000..45e3e9987a8 --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md @@ -0,0 +1,76 @@ +--- +id: 65ef1d5e3d2927c5e0f4997b +title: Step 17 +challengeType: 20 +dashedName: step-17 +--- + +# --description-- + +Outside the for loop, create an `if` statement to check if the value of `root` is still `None`. If it is, print the message `'Failed to converge within {max_iterations} iterations.'`. Remember to format the message using an f-string. + +# --hints-- + +You should create an `if` statement that checks if `root is None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[0].is_equivalent("root is None")`)); + + } +}) +``` + +You should pass the argument `f'Failed to converge within {max_iterations} iterations.'` to the `print` function. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].is_equivalent("if root is None:\\n print(f'Failed to converge within {max_iterations} iterations.')")`)); + + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md new file mode 100644 index 00000000000..ffe75554dd8 --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md @@ -0,0 +1,77 @@ +--- +id: 65ef1d924ff2e5c7031c6ce8 +title: Step 18 +challengeType: 20 +dashedName: step-18 +--- + +# --description-- + +Create an `else` clause to handle the case where the value of `root` is not `None`, indicating that a root hass been found. If it is not `None`, print the message `'The square root of {square_target} is approximately {root}'`. Remember to format using an f-string. + +# --hints-- + +You should create an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[1] == _Node()`)); + } +}) + +``` + +You should print `f'The square root of {square_target} is approximately {root}'` within the `else` body. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_bodies()[1].is_equivalent("print(f'The square root of {square_target} is approximately {root}')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md new file mode 100644 index 00000000000..1a2bb01cf56 --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md @@ -0,0 +1,68 @@ +--- +id: 65ef1dd722f6e7c8294eeec4 +title: Step 19 +challengeType: 20 +dashedName: step-19 +--- + +# --description-- + +Finally, return the value of `root` from the `square_root_bisection` function. + +# --hints-- + +You should return `root` at the end of the function. + +```js +({ + test: () => + { + const pyClassStr = runPython(`str(_Node(_code).find_function("square_root_bisection"))`); + assert.match(pyClassStr, /return\s*root/) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md new file mode 100644 index 00000000000..7904b9bceab --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md @@ -0,0 +1,70 @@ +--- +id: 65ef1e10268f8ec9121446d1 +title: Step 20 +challengeType: 20 +dashedName: step-20 +--- + +# --description-- + +Outside the function definiton, create a variable `N` and assign the value of `16` to it. + +# --hints-- + +You should have the variable `N = 16` outside the function definition. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_variable("N").is_equivalent("N = 16")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md new file mode 100644 index 00000000000..71da1b62c03 --- /dev/null +++ b/curriculum/challenges/korean/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md @@ -0,0 +1,115 @@ +--- +id: 65ef1eac497754cafa12a26c +title: Step 21 +challengeType: 20 +dashedName: step-21 +--- + +# --description-- + +Call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +Experiment with larger values. + +With this, you have successfully implemented the bisection method to find the square root of a number. + +# --hints-- + +You should call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +```js +({ + test: () => assert(runPython(`_Node(_code).has_call("square_root_bisection(N)")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- +N = 16 + +--fcc-editable-region-- + +``` + +# --solutions-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +N = 16 +square_root_bisection(N) +``` diff --git a/curriculum/challenges/korean/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md b/curriculum/challenges/korean/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md index f6c9ff75085..553cab26ba9 100644 --- a/curriculum/challenges/korean/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md +++ b/curriculum/challenges/korean/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md @@ -7,7 +7,7 @@ dashedName: step-8 # --description-- -To see the `cat-head` element, give it a linear gradient background with `#5e5e5e` at `85%` and `#45454f` at `100%`. +To see the `.cat-head` element, give it a linear gradient background with `#5e5e5e` at `85%` and `#45454f` at `100%`. You might not notice the difference between these two colors, but they are there. diff --git a/curriculum/challenges/korean/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md b/curriculum/challenges/korean/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md index 356b443cc39..6d163e80f07 100644 --- a/curriculum/challenges/korean/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md +++ b/curriculum/challenges/korean/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md @@ -11,7 +11,7 @@ Inside your `.cat-ears` element, create two `div` elements with the classes `cat # --hints-- -You should not change the existing `div` element with the class `car-ears`. +You should not change the existing `div` element with the class `cat-ears`. ```js assert(document.querySelectorAll('div.cat-ears').length === 1); diff --git a/curriculum/challenges/korean/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md b/curriculum/challenges/korean/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md index 1c8891e4304..e31012a1ab1 100644 --- a/curriculum/challenges/korean/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md +++ b/curriculum/challenges/korean/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md @@ -11,7 +11,7 @@ The last position property value is `sticky`. `sticky` positioning is a hybrid o Change the value of the `position` property of `.cat-head` to `sticky`, set `top` to `0`, then remove `left` and its value. -**Note**: To see how `sticky` works, you have to place a couple of texts before and after your `.cat-head` `div` element. If you scroll up after that, you'll see that the `.cat-head` gets stuck to the top and remains there. +**Note**: To see how `sticky` works, you have to place a couple of texts before and after your `.cat-head` `div` element. If you scroll down after that, you'll see that the `.cat-head` gets stuck to the top and remains there. # --hints-- diff --git a/curriculum/challenges/korean/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md b/curriculum/challenges/korean/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md index 0f93285cb97..5f212983dbc 100644 --- a/curriculum/challenges/korean/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md +++ b/curriculum/challenges/korean/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md @@ -61,7 +61,7 @@ while (continueLoop) { --fcc-editable-region-- --fcc-editable-region-- -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/korean/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md b/curriculum/challenges/korean/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md index bf40abef119..3f935935d65 100644 --- a/curriculum/challenges/korean/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md +++ b/curriculum/challenges/korean/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md @@ -44,7 +44,7 @@ let done = 0; while (continueLoop) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/korean/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md b/curriculum/challenges/korean/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md index 9c976287a58..38f1716a030 100644 --- a/curriculum/challenges/korean/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md +++ b/curriculum/challenges/korean/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md @@ -48,7 +48,7 @@ let done = 0; while (done !== count) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/korean/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md b/curriculum/challenges/korean/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md index 020d23938c1..c9530607b95 100644 --- a/curriculum/challenges/korean/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md +++ b/curriculum/challenges/korean/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md @@ -23,15 +23,7 @@ Test value of `__name__` ```js ({ - test: () => assert(__pyodide.runPython(`__name__ == '__main__'`)) -}) -``` - -Test __locals and __pyodide - -```js -({ - test: () => assert(__pyodide.runPython(`__locals.get('add')(4,5) == 9`)) + test: () => assert(runPython(`__name__ == '__main__'`)) }) ``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md index d2139487de3..de4fa3e7ee3 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md @@ -1,6 +1,5 @@ --- id: 658111239f39a01c8f095c44 -videoId: nLDychdBwUg title: "Dialogue 1: What Motivates the Team?" challengeType: 21 dashedName: dialogue-1-what-motivates-the-team @@ -13,3 +12,275 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Maria", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.5, + "dialogue": { + "text": "Hey Maria, I have a question… Do you know what motivates the team?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 4.9, + "finishTime": 7.4, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 8.7, + "finishTime": 12.3, + "dialogue": { + "text": "Hi Brian! Well, one thing that really motivates me is learning new things.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 12.7, + "finishTime": 16, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 16.5, + "finishTime": 18.2, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 19.7, + "finishTime": 20.9, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 21.3, + "finishTime": 24.7, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 25, + "finishTime": 27.2, + "dialogue": { + "text": "But you know what demotivates me sometimes?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 27.7, + "finishTime": 32.6, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 33.1, + "finishTime": 37.3, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 37.7, + "finishTime": 39.7, + "dialogue": { + "text": "Well, collaborating with our creative team", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 39.7, + "finishTime": 42.5, + "dialogue": { + "text": "and brainstorming many ideas really inspires me.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 42.8, + "finishTime": 44.6, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 45.5, + "finishTime": 49, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 49.3, + "finishTime": 53.6, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 54, + "finishTime": 55.5, + "dialogue": { + "text": "It is really frustrating.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 56.5, + "finishTime": 58.4, + "dialogue": { + "text": "Yeah, technical glitches are complicated", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 58.4, + "finishTime": 61, + "dialogue": { + "text": "and there's not much we can do other than try to solve them.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 62, + "finishTime": 63.3, + "dialogue": { + "text": "But do you know what else is great?", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 63.7, + "finishTime": 66.7, + "dialogue": { + "text": "Seeing the team's enthusiasm after solving these issues.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 67.1, + "finishTime": 69.8, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 71.3, + "finishTime": 75.4, + "dialogue": { + "text": "Yeah. Wow. You know what? This was really a motivating talk.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 75.7, + "finishTime": 77.1, + "dialogue": { + "text": "Thanks for sharing your thoughts.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 77.7, + "finishTime": 79.8, + "dialogue": { + "text": "Anytime. It's good to have these discussions.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 80, + "finishTime": 81.6, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "right" + } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 82.1 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 82.6 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md index 5eb9cbab87f..bd40d89ce39 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-6 --- - + # --description-- @@ -18,7 +15,7 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ## --sentence-- -`Well, one thing that really motivates me is _ new things.` +`Hi, Brian. Well, one thing that really motivates me is _ new things.` ## --blanks-- @@ -27,3 +24,47 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ### --feedback-- This word is a gerund, the `-ing` form of the verb used as a noun, indicating the action or process of gaining knowledge. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md index 57d5a2b1a4d..279e2861a88 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-5 --- - + # --description-- @@ -20,7 +17,7 @@ When you add an `s` at the end of a word, like `things`, it means you are talkin ## --sentence-- -`Hi Brian! _, one _ that really motivates me _ learning new _.` +`Hi, Brian! _, one _ that really motivates me _ learning new _.` ## --blanks-- @@ -53,3 +50,47 @@ This is the verb `to be` conjugated in the third person singular. ### --feedback-- Maria uses this word to talk about more than one item or idea she likes to learn. It is the plural form of `thing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md index eee61930dcc..3ecb0ccb702 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-7 --- - + # --description-- @@ -51,3 +48,47 @@ learning new things ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md index 053ae896f0b..80d98bbbc33 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-8 --- - + # --description-- @@ -37,3 +34,47 @@ This word is a gerund describing the activity Maria enjoys related to discoverin ### --feedback-- Another gerund that follows `and`, indicating another activity Maria enjoys, which is about getting better at something. It also ends in `-ing` and serves as a noun. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 15.04 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.28, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.78 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md index fbe4dcc505d..cfa8469782b 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-10 --- - + # --description-- @@ -26,7 +23,7 @@ In `I love exploring many new technologies`, how is `exploring` used? ## --answers-- -As a present continuous +As a verb in the present continuous structure ### --feedback-- @@ -34,7 +31,7 @@ Present continuous are for actions happening now. This is not showing an action --- -As a simple present verb +As a verb in the simple present structure ### --feedback-- @@ -42,11 +39,11 @@ Simple present verbs don't end in `-ing`. --- -As a gerund +As a verb in the gerund form --- -As a past participle +As a verb in the past participle form ### --feedback-- @@ -55,3 +52,47 @@ Past participles are for perfect tenses or as adjectives. This is not used like ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 6.50, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills. It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 7.00 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md index 80690caccd2..252cf48c05b 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-18 --- - + # --description-- @@ -31,3 +28,47 @@ Adding a prefix to a word can change its meaning. ### --feedback-- Maria uses an adjective ending in `-ing` to describe a feeling that is the opposite of `motivating`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 32.22, + "finishTimestamp": 36.08 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.86, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.36 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md index 9001228085f..2ea50eff48d 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-11 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to the audio and complete the sentence. ### --feedback-- This word is used when someone listens to what another person says. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 19.86 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 2.68 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md index f00bebea879..042955730aa 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-12 --- - + # --description-- @@ -49,3 +46,47 @@ This word means to develop or become bigger or more advanced. It ends with `-ing ### --feedback-- This word is related to work or a career. It describes doing something in a way that shows good skills and behavior at a job. it ends with `-ly` + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 20.28, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md index 885332a3dfc..008035b84e7 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-13 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on how skill improvement fits into overall personal and professional dev ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.98, + "dialogue": { + "text": "That's great to hear, Maria. Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.48 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md index a99fd602832..e087041f3d9 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-14 --- - + # --description-- @@ -53,3 +50,65 @@ He's adding to the conversation, not changing the topic. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 26.26 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 2.60, + "finishTime": 5.64, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot,", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 6.02, + "finishTime": 8.58, + "dialogue": { + "text": "but you know what demotivates me sometimes?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 9.08 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md index 0bcef38811f..ed340f1a31c 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md @@ -28,4 +28,48 @@ Listen to the audio and complete the sentence. ### --feedback-- -This word means feeling very happy and eager. +This word means feeling very happy and eager. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 15.32, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.94, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.44 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md index b425e084763..cf6dcc31710 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-16 --- - + # --description-- @@ -55,3 +52,47 @@ This phrase means having plenty of time, which is different from what Brian mean ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md index b5708ac00fe..8de15f47d1c 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-17 --- - + # --description-- @@ -47,3 +44,47 @@ This word is a preposition used to compare or illustrate a similarity to somethi ### --feedback-- It means you are doing something quickly because you do not have much time. It ends with `-ing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md index 5293029060e..f74bac67a8c 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-20 --- + + # --description-- The word `brainstorming` refers to a group discussion to produce ideas and solve problems. @@ -46,3 +48,47 @@ It means adhering to specific instructions, which is not the same as the word. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md index ea82aef1538..1b4aea4a2b1 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-28 --- - + # --description-- @@ -18,7 +15,7 @@ The phrase `slow down` means to decrease in speed or reduce the rate of progress ## --sentence-- -`The problem is encountering many technical issues that make our progress _ _.` +`The problem is encountering many technical issues that _ our progress _.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to describe a decrease in speed or pace. ### --feedback-- This adverb complements the phrase to indicate a reduction or decrease in intensity, speed, or amount. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md index ed1c423927b..bd8c7fa6444 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-32 --- + + # --description-- The phrase `other than` indicates the presence of an alternative or different option. @@ -46,3 +48,47 @@ It means the singular or exclusive option, which is not the same as the phrase. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md index d2a4201ca63..9712d6a3279 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-35 --- - + # --description-- @@ -43,3 +40,47 @@ This possessive adjective is used to refer to something that belongs to the pers ### --feedback-- This noun refers to the reason or reasons one has for acting or behaving in a particular way. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 66.12, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 3.68, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.18 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md index 8f432d36f95..c5b54c0b913 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-38 --- - + # --description-- @@ -29,3 +26,47 @@ In the dialogue, Maria talks about the importance of discussions to help them re ### --feedback-- This verb is used to make someone think of something they might have forgotten. It brings something back into someone's mind. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 76.52, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.08, + "dialogue": { + "text": "Anytime. It's good to have these discussions. It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.58 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md index ba9e43efcb6..974459e9326 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-39 --- - + # --description-- @@ -43,3 +40,47 @@ This pronoun refers to the speaker and at least one other person, indicating a c ### --feedback-- This word is used in the context of continuing forward or persevering in a particular action or state. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 79.06, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.54, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.04 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md index 2f8c34f4dbf..c1b55b444af 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md @@ -1,6 +1,5 @@ --- id: 658160772584ba319849f910 -videoId: nLDychdBwUg title: "Dialogue 2: Asking How Someone Feels" challengeType: 21 dashedName: dialogue-2-asking-how-someone-feels @@ -13,3 +12,239 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Alice", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Tom", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Alice", + "startTime": 2, + "finishTime": 5.6, + "dialogue": { + "text": "Hi Tom, you look a bit down these days. Is everything okay?", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 6.3, + "finishTime": 9.5, + "dialogue": { + "text": "Hey Alice, yeah, I feel a bit demotivated.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 9.8, + "finishTime": 13.6, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 13.8, + "finishTime": 16.7, + "dialogue": { + "text": "It's exhausting, and it feels like I'm constantly running", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 16.7, + "finishTime": 18.1, + "dialogue": { + "text": "without knowing where I'm going.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 18.9, + "finishTime": 22.7, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 23.4, + "finishTime": 25.7, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 26.2, + "finishTime": 28.8, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 28.8, + "finishTime": 30.6, + "dialogue": { + "text": "instead of working together as a team.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 31.3, + "finishTime": 34.7, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 35, + "finishTime": 38.4, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 38.9, + "finishTime": 41.7, + "dialogue": { + "text": "Sometimes, it feels like we're meeting for no reason,", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 41.7, + "finishTime": 44.3, + "dialogue": { + "text": "and it's hard to find time to actually work on projects.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 45, + "finishTime": 48.4, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 49, + "finishTime": 52.6, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 52.6, + "finishTime": 56.6, + "dialogue": { + "text": "without any variation. It feels like I'm wasting my skills and creativity.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 57.06, + "finishTime": 59, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 59.6, + "finishTime": 62.8, + "dialogue": { + "text": "Repeating the same tasks over and over can be demotivating.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 63.2, + "finishTime": 66.4, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 66.8, + "finishTime": 69.4, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation,", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 69.4, + "finishTime": 71.3, + "dialogue": { + "text": "and it's good to share and support each other.", + "align": "left" + } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 71.8 + }, + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 72.3 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md index b8674840c93..9a3003405af 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-40 --- - + # --description-- @@ -22,7 +19,7 @@ In this conversation, Alice notices something about Tom's mood and asks if he's ## --sentence-- -`Hi Tom, you look a bit _ _ days. Is everything okay?` +`Hi, Tom. You look a bit _ _ days. Is everything okay?` ## --blanks-- @@ -39,3 +36,47 @@ This word is used to describe feeling sad or unhappy. It's like when you're not ### --feedback-- This word is used with `days` to talk about the current time or the recent period. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 0.98, + "finishTimestamp": 4.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.60, + "dialogue": { + "text": "Hi, Tom. You look a bit down these days. Is everything okay?", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.10 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md index 8fe09a43d89..fdd78d7f84d 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-41 --- - + # --description-- @@ -20,7 +17,7 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ## --sentence-- -`Hey Alice, yeah, I feel a bit _.` +`Hey, Alice. Yeah, I feel a bit _.` ## --blanks-- @@ -29,3 +26,47 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ### --feedback-- This word is used to describe how Tom feels. It ends with `ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 8.48 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md index a8f6062add9..e30ea2d793a 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-42 --- - + # --description-- @@ -46,8 +43,52 @@ This word means `lacking` or `not having` something. --- -`break` +`breaks` ### --feedback-- -This word refers to a short period of rest or pause from work or activity. +This word refers to a short period of rest or pause from work or activity. Use the plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 8.84, + "finishTimestamp": 12.60 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.76, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.26 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md index 90185d888a6..b19719a1211 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-43 --- - + # --description-- @@ -45,3 +42,47 @@ This word means something is happening all the time or very often. ### --feedback-- This word is used to indicate the absence of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 12.82, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 5.30, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.80 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md index b6f27b9c9b9..524c4be5635 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-44 --- - + # --description-- @@ -18,7 +15,7 @@ Tom talks about what's making him feel demotivated. Let's figure out what is bot ## --text-- -What is making Tom feel demotivated and why? +What is making Tom feel demotivated? ## --answers-- @@ -51,3 +48,65 @@ Reflect on Tom's words about his work routine and how it makes him feel. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.54, + "finishTime": 8.3, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 8.52, + "finishTime": 12.82, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 13.32 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md index 23f853581be..b084d8c5f2d 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-45 --- - + # --description-- @@ -51,3 +48,47 @@ She understands how Tom feels ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 18.98 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 2.28, + "dialogue": { + "text": "I totally get that, Tom.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 2.78 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md index 95b626db8ab..18b3ede5a71 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-46 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working more hours than what is normally required, often beyond ### --feedback-- This word describes something that makes you feel very tired, like it's taking all your energy away. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 21.72 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.02, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.52 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md index 8e581dc301d..143b260cab0 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-47 --- - + # --description-- @@ -35,3 +32,47 @@ This word means managing or handling, especially when the situation is challengi ### --feedback-- This word, in the context of the office, refers to the social and power dynamics among coworkers and within the workplace environment. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 24.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.52, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.02 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md index ffd2e2364d2..5c132f9bd9c 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-48 --- - + # --description-- @@ -45,3 +42,47 @@ This word means making an effort to do something, often something challenging. ### --feedback-- This word is about doing tasks, especially with others to achieve a common goal or finish a project. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 25.02, + "finishTimestamp": 29.38 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.36, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.86 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md index eed7315d9fd..1c59d0c36f8 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-49 --- - + # --description-- @@ -51,3 +48,65 @@ Reflect on the specific aspect of work that Alice mentions she hates dealing wit ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 29.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.9, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 5.64, + "finishTime": 7.96, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 8.4, + "finishTime": 12.88, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 13.38 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md index 008029728ad..89639635494 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-50 --- - + # --description-- @@ -22,11 +19,11 @@ Tom is agreeing with Alice about a specific aspect of work that they find unplea ## --blanks-- -`dealing` +`Dealing` ### --feedback-- -This word means managing or handling something, often implying that it's not an easy or enjoyable task. +This word means managing or handling something, often implying that it's not an easy or enjoyable task. Don't forget the capitalization. --- @@ -35,3 +32,47 @@ This word means managing or handling something, often implying that it's not an ### --feedback-- In the context of an office, this word refers to the social and power dynamics among coworkers. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 30.08, + "finishTimestamp": 33.46 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md index 33c828a005d..eb1ae62b875 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-51 --- - + # --description-- @@ -45,3 +42,47 @@ This word is part of a expression that means something is making Tom upset or an ### --feedback-- This word is used when you're talking about experiencing something, like when you have a lot of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md index f182b582c7f..9e516b17b69 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-52 --- - + # --description-- @@ -51,3 +48,47 @@ He wishes for even more meetings ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md index 43b8ae258c9..f457d5cb4c2 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-53 --- - + # --description-- -Listen to the audio and answer the question. +Listen to the audio and fill in the blanks. # --fillInTheBlank-- @@ -51,3 +48,47 @@ This word means to discover or locate something. It's often used when you're loo ### --feedback-- This word is used to emphasize what is really true or happening. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md index e12e17d47ff..a0c2ef0d79a 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-54 --- - + # --description-- @@ -51,3 +48,47 @@ They take away time from working on projects ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md index 2bd6b036fb7..97dde90f3cb 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-55 --- - + # --description-- @@ -24,7 +21,7 @@ Alice: I hear you, Tom. Sitting in meetings for hours can be discouraging. ## --sentence-- -`_ in meetings for hours can be _.` +`I hear you, Tom. _ in meetings for hours can be _.` ## --blanks-- @@ -41,3 +38,47 @@ This word describes the action of being seated. It is capitalized. ### --feedback-- This word means something that makes you feel less confident or willing to continue. It ends in `ing`, showing it's describing the effect of the action. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md index da3c221a1f1..30aeb3ff460 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md @@ -5,12 +5,7 @@ challengeType: 19 dashedName: task-56 --- - + # --description-- @@ -53,3 +48,47 @@ Consider what Alice means by `discouraging` in the context of meetings. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md index c60324ba8d3..2957a5033ab 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-57 --- - + # --description-- @@ -43,3 +40,47 @@ This word is used to describe a large number of things grouped together. It's li ### --feedback-- This word refers to having different types or changes in something. It's the opposite of doing the same thing over and over. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 52.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 6.02, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.52 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md index 63d0a5a5643..cf49c33b69a 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-58 --- - + # --description-- @@ -35,3 +32,47 @@ This word means not using something valuable in a good or effective way. It's li ### --feedback-- This word refers to the ability to make new things or think of new ideas. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 53.24, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.34, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 3.84 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md index 540a3a77c0f..e189fc50af5 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-59 --- - + # --description-- @@ -51,3 +48,56 @@ Consider what Alice says directly annoys her versus how she feels about another ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md index ef09e4af19b..a5f87b483bd 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-60 --- - + # --description-- @@ -51,3 +48,56 @@ Think about whether meetings are mentioned in the context of wasting skills and ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md index fa7b1328561..7f182561d7f 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-61 --- - + # --description-- @@ -39,3 +36,47 @@ This auxiliary verb is used here to emphasize the verb that follows it, making t ### --feedback-- This adjective describes feelings of annoyance or irritation, often because of obstacles or difficulties. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 58.00 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.14, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 3.64 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md index e2e6ee3f118..d0f7a57efaa 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-62 --- - + # --description-- @@ -55,3 +52,47 @@ This word, when used twice with `and` in between, emphasizes the repetition of a ### --feedback-- This word describes something that reduces your desire or willingness to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 61.78 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "That does sound frustrating, Alice. Repeating the same tasks over and over can be demotivating.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md index 27d721f5a0a..bef09034af7 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-63 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to describe an emotional experience or sensation, in this case ### --feedback-- This word is the plural of `this`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md index 1721b02d9e4..c2eefbb7b7d 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-65 --- - + # --description-- @@ -51,3 +48,47 @@ For listening to him ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md index 80ad6cb9859..dc1a51e3b48 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-66 --- - + # --description-- @@ -51,3 +48,47 @@ This word means to tell others about your own experiences, thoughts, or feelings ### --feedback-- This word involves giving help or encouragement, showing you are there for someone. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md index 88359a9631c..ae0f2da0a0d 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-67 --- - + # --description-- @@ -51,3 +48,47 @@ The value of sharing feelings and supporting one another ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md index 01535bb27f7..e34ef923278 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-64 --- - + # --description-- @@ -44,3 +41,46 @@ This word is the middle part of the phrase used to casually introduce new inform This word completes the phrase, indicating a casual addition or shift in the conversation. +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md index abd512abbb8..fb7e5ccda2d 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md @@ -1,6 +1,5 @@ --- id: 65a351bd69b0b72d7ed24eb5 -videoId: nLDychdBwUg title: "Dialogue 3: Talking About Motivations to Pursue a Career" challengeType: 21 dashedName: dialogue-3-talking-about-motivations-to-pursue-a-career @@ -13,3 +12,212 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Lisa", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5, + "dialogue": { + "text": "Hey Lisa, what motivated you to choose a career in tech?", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 6, + "finishTime": 8.5, + "dialogue": { + "text": "One of my main motivations was the financial stability", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 8.8, + "finishTime": 10, + "dialogue": { + "text": "that tech jobs can provide.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 10.4, + "finishTime": 12.8, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 13.3, + "finishTime": 16.3, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 17.4, + "finishTime": 19.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 19.8, + "finishTime": 24, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 24, + "finishTime": 26, + "dialogue": { + "text": "and have different perspectives.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 26.8, + "finishTime": 29.2, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 29.2, + "finishTime": 32.1, + "dialogue": { + "text": "Another thing was the chance to be part of projects", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 32.1, + "finishTime": 34.2, + "dialogue": { + "text": "that push the limits of innovation and creativity.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 34.9, + "finishTime": 36, + "dialogue": { + "text": "I'm with you on that one.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 36.1, + "finishTime": 39.6, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 39.7, + "finishTime": 43.1, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 44.3, + "finishTime": 47.3, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 47.3, + "finishTime": 49.6, + "dialogue": { + "text": "and finding practical solutions is really thrilling.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 50.3, + "finishTime": 53, + "dialogue": { + "text": "Knowing that we solved problems is really exciting, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 53.4, + "finishTime": 56.7, + "dialogue": { + "text": "I hope we keep getting as much motivation from it as we can.", + "align": "left" + } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.2 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.7 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md index e165f760c08..23c160c642f 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-68 --- - + # --description-- @@ -18,7 +15,7 @@ Brian: Hey Lisa, what motivated you to choose a career in tech? ## --sentence-- -`Hey Lisa, what _ you to _ a career in tech?` +`Hey, Lisa, what _ you to _ a career in tech?` ## --blanks-- @@ -34,4 +31,48 @@ This word means something gave you a reason or desire to do something. It ends w ### --feedback-- -This verb is about making a decision between different options. +This verb is about making a decision between different options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md index 94e4ccd2b3e..3a96b95c93a 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-69 --- - + # --description-- @@ -51,3 +48,47 @@ What motivated her to pick a tech career ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md index 47d7700e414..9dc5f7bc32d 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-70 --- - + # --description-- @@ -37,3 +34,47 @@ The most important. ### --feedback-- Being steady, meaning you don't have to worry too much about it. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md index afed572b3be..22a27d6cb43 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-71 --- - + # --description-- @@ -35,3 +32,47 @@ This word is a past tense verb used to describe a state or condition in the past ### --feedback-- This verb means to give or supply something needed, like help, information, or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md index a5031402575..f006bbf44d1 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-72 --- - + # --description-- @@ -52,3 +48,71 @@ Reflect on Lisa's statement and whether travel is mentioned as a motivation. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.50 + }, + { + "character": "Lisa", + "opacity": 1, + "startTime": 5.50 + }, + { + "character": "Lisa", + "startTime": 5.82, + "finishTime": 10.02, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md index e71f55301a3..4b20a9bd448 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-73 --- - + # --description-- @@ -37,3 +34,47 @@ This verb means giving permission or making it possible to do something. this ve ### --feedback-- This noun describes the feeling of being certain about your abilities or something you're going to do. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 9.48, + "finishTimestamp": 11.90 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.42, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 3.92 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md index 4f8c68dfebb..ca8b0a42958 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-74 --- - + # --description-- @@ -39,3 +36,47 @@ This word refers to different areas of work or study. It's plural here because s ### --feedback-- This verb is used to talk about successfully reaching a goal, especially after putting in effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 12.16, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md index d0951b06bde..84aca093d52 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-75 --- - + # --description-- @@ -51,3 +48,65 @@ Lisa doesn't mention working less. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md index 1e5b8911585..9bd217faa04 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-76 --- - + # --description-- The words `much` and `many` are used to talk about quantity. @@ -52,3 +49,65 @@ Reflect on Lisa's statement about what makes tech jobs stand out for her. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md index 38a5ed3758e..013e56a7705 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-77 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to Brian's response to Lisa and fill in the missing word that shows he st ### --feedback-- This adverb is used to emphasize the truth or importance of a statement, showing strong agreement or belief. it ends with `ly`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 18.38 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.40, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.90 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md index 620135fd503..145afc143d8 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-78 --- - + # --description-- @@ -51,3 +48,47 @@ This word is used to describe different areas of study or work. This word is in ### --feedback-- These are different ways of viewing or thinking about something. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 18.80, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.20, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.70 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md index 5f88ce8ca38..56d23563f4a 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-79 --- - + # --description-- @@ -51,3 +48,56 @@ Consider Brian's interest in working across many fields versus concentrating on ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 3.82, + "finishTime": 10.02, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md index 9867dd455d5..36fa55aa8ae 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-80 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working together with others. Notice it ends with `-ing`, indica ### --feedback-- This adjective describes something that is thrilling or full of energy. It ends with `-ing`, showing a quality or state. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.62, + "finishTimestamp": 28.18 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md index 31ed219cb44..d126871e672 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-81 --- - + # --description-- @@ -45,3 +42,47 @@ TTo extend or go beyond usual limits or boundaries. It's often used to talk abou ### --feedback-- This noun refers to new ideas, products, or methods that improve something or solve problems. It's about coming up with new ways to do things. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 28.38, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md index 976777de56e..19ed243bc7e 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-82 --- - + # --description-- @@ -51,3 +48,56 @@ Consider whether Lisa's motivation is related to work environment or the nature ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.94 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md index cc4a931a4a1..9d83cc465d3 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-83 --- - + # --description-- @@ -52,3 +48,80 @@ He agrees with Lisa ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 34.98 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.45 + }, + { + "character": "Brian", + "opacity": 1, + "startTime": 8.45 + }, + { + "character": "Brian", + "startTime": 8.57, + "finishTime": 10.16, + "dialogue": { + "text": "I'm with you on that one.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.66 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md index 3c748ab456e..c9ec667c225 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-84 --- - + # --description-- @@ -37,3 +34,47 @@ This noun describes the ability to change or adapt easily according to different ### --feedback-- This word refers to the specific functions or positions that individuals can have within a group or organization. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 38.36 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.76 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md index f111304b929..566d8c5e7db 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-85 --- - + # --description-- @@ -20,7 +17,7 @@ Listen carefully and fill in the missing words about what tech roles make possib ## --sentence-- -`They _ us to balance our jobs with personal _ and hobbies.` +`I'm also interested in the flexibility that tech roles offer. They _ us to balance our jobs with personal _ and hobbies.` ## --blanks-- @@ -37,3 +34,56 @@ This verb means to make something possible or to give permission for something. ### --feedback-- This noun refers to things you enjoy doing, like hobbies or activities that catch your attention. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md index 0efe7ddf734..f5aab15821c 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-86 --- - + # --description-- @@ -55,3 +52,56 @@ Is Brian talking about traveling, or is he interested in something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md index 1828c2b24fd..f285c7e7f50 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-87 --- - + # --description-- @@ -45,3 +42,47 @@ This word means discovering or coming up with something, like an answer or solut ### --feedback-- This adjective means very exciting. It often describes something that makes your heart beat faster because it's so exciting or fun. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md index a2b77cc1c45..689b3e667de 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-88 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on the word `satisfaction` and if it suggests feeling tired. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md index 122529e8f39..fd8178da8fc 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-89 --- - + # --description-- @@ -43,3 +40,47 @@ This adjective describes something that is thrilling or causes great enthusiasm. ### --feedback-- This word means receiving or obtaining something. Here, it's also in the `-ing` form, indicating an ongoing action or process. Remember to use double `t`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md index f8bb1a273ee..a72f4990d84 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-90 --- - + # --description-- @@ -53,3 +50,47 @@ Brian talks about being excited by solving problems, not about where to find mot ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md index 93a91f9790d..f0a8796d57b 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md @@ -13,3 +13,221 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Bob", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sarah", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.6, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech?", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 5, + "finishTime": 7, + "dialogue": { + "text": "It's all those amazing gadgets!", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 7.8, + "finishTime": 9.6, + "dialogue": { + "text": "I can see your enthusiasm, Bob!", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 9.9, + "finishTime": 12.3, + "dialogue": { + "text": "Tell me, which tech gadgets are your absolute favorites?", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 13, + "finishTime": 16.2, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 16.3, + "finishTime": 18.9, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health,", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 19.2, + "finishTime": 22.7, + "dialogue": { + "text": "and even helps me stay organized with reminders and notifications.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 23.7, + "finishTime": 26, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 26, + "finishTime": 28.1, + "dialogue": { + "text": "The camera quality, the speed,", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 28.3, + "finishTime": 30.8, + "dialogue": { + "text": "and the number of apps available are what I like the most.", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 31.2, + "finishTime": 33.9, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 34.3, + "finishTime": 37.2, + "dialogue": { + "text": "Gadgets like these are transforming our daily lives.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 37.6, + "finishTime": 40.8, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 41.3, + "finishTime": 44, + "dialogue": { + "text": "I love capturing stunning aerial shots", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 44, + "finishTime": 46.5, + "dialogue": { + "text": "and exploring new angles for photography.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 47.7, + "finishTime": 50.3, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 50.7, + "finishTime": 52.7, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 52.7, + "finishTime": 54.5, + "dialogue": { + "text": "It's amazing how these innovations", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 54.5, + "finishTime": 56.8, + "dialogue": { + "text": "keep making our lives more interesting and connected.", + "align": "right" + } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.3 + }, + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.8 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md index 2f5b51c5efe..1c735765ddb 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-91 --- - + # --description-- @@ -47,3 +44,47 @@ This word is used to point out specific things that are being talked about, in t ### --feedback-- This word refers to small electronic devices or tools that are useful or interesting. It's often used to talk about cool tech items. It is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md index 06bb47f4e2f..7ddc748e75b 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-92 --- - + # --description-- @@ -51,3 +48,47 @@ The latest technology gadgets ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md index 746bfa4615b..96ed9a633c9 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-93 --- - + # --description-- @@ -27,3 +24,47 @@ Sarah: I can see your enthusiasm, Bob! ### --feedback-- This noun describes the feeling of being very excited or interested in something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 8.60 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 2.74, + "dialogue": { + "text": "I can see your enthusiasm, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.24 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md index a7eb6fcbfcb..4f55a749a61 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-94 --- - + # --description-- @@ -22,7 +19,7 @@ Sarah: I can see your enthusiasm, Bob! Tell me, which tech gadgets are your abso ## --sentence-- -`Tell me, _ tech gadgets are your _ favorites?` +`I can see your enthusiasm, Bob! Tell me, _ gadgets are your _ favorites?` ## --blanks-- @@ -39,3 +36,47 @@ This word asks for a specific choice or selection from a known group of items. ### --feedback-- This adjective emphasizes that the choice is the most complete or total among all options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 11.36 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.50, + "dialogue": { + "text": "I can see your enthusiasm, Bob. Tell me, which gadgets are your absolute favorites?", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.00 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md index 09bd788377d..9514f27cc60 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-95 --- - + # --description-- @@ -35,3 +32,47 @@ This preposition is used to show that something belongs to or is part of somethi ### --feedback-- This noun refers to a type of watch that has more features than just telling time, often including apps and internet connectivity. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 15.20 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.66 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md index b247dacc6dd..feadc88525d 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md @@ -5,10 +5,8 @@ challengeType: 22 dashedName: task-96 --- - + + # --description-- `To track` means to follow or monitor the progress, movement, or development of something or someone. @@ -44,3 +42,47 @@ This verb means to monitor or follow the course or progress of something, especi ### --feedback-- This verb means to make it easier or possible for someone to do something by offering services or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md index 99dcae91a0c..2c3332a8708 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-97 --- - + # --description-- @@ -45,3 +42,47 @@ This adjective means arranged in a systematic way, especially on a large scale. ### --feedback-- These are alerts or messages that prompt you to remember tasks or appointments. This word ends with `s`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md index 4d36b7b2989..49fbdc264ee 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-98 --- - + # --description-- @@ -51,3 +48,56 @@ It keeps him connected, tracks his health, and helps him stay organized ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.32, + "finishTime": 10.70, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 11.20 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md index 7185d037ed7..2d1e897054c 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-99 --- - + # --description-- @@ -35,3 +32,47 @@ This word is capitalized and in plural form. ### --feedback-- This word describes advanced mobile phones with extensive computing capabilities and connectivity. It is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 25.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.98 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md index 1f660afcb03..81e873d902e 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-100 --- - + # --description-- @@ -53,3 +50,47 @@ This adjective means something can be accessed or used, like apps in an app stor ### --feedback-- This word is used to indicate the highest degree or the greatest amount of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 25.24, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.60, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.10 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md index 6998dd4ffa5..1e063e1befc 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-101 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on whether design is a factor in Sarah's stated preferences. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.56, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 3.68, + "finishTime": 8.08, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 8.58 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md index dac54e85492..92b3b88cee4 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-102 --- - + # --description-- @@ -43,3 +40,47 @@ This verb means causing a significant change or improvement in something. This w ### --feedback-- This adjective refers to something that happens every day or is part of everyday life. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md index 66cda46110d..6e56479dc8d 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-103 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Bob mentions radio as a factor in transforming daily life. ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md index ec96099aa49..93b5cc92a66 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-104 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to talk about the current period of time or the present days. ### --feedback-- This noun refers to remote-controlled flying machines, often used for photography, racing, or recreation. This word is capitalized. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 39.78 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.20, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.70 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md index 2eb13bfcb4b..7bdc1f302f5 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-105 --- - + # --description-- @@ -43,3 +40,47 @@ This verb involves examining or investigating something in order to learn more a ### --feedback-- This noun refers to the art, practice, or job of taking pictures with a camera, capturing moments, and expressions. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md index 08e3ab9b847..95aa8e526fc 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-106 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective describes something extremely beautiful or impressive. ### --feedback-- In photography, this noun means photographs or the act of taking a photograph. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md index 1b7d3770f1d..f8e77d3a9fe 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-107 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective refers to something related to the air or happening in the sky. ### --feedback-- This noun refers to the specific viewpoints or positions from which photos are taken. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md index c172cb36554..cf2a562eb4c 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-108 --- - + # --description-- @@ -51,3 +48,56 @@ They allow for stunning aerial photography ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.2, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.78, + "finishTime": 9.98, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 10.48 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md index a67e640bd01..64e3aa577d5 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-109 --- - + # --description-- @@ -35,3 +32,47 @@ This adjective in the expression means allowing access, passage, or a view throu ### --feedback-- This noun refers to things that may happen or be the case in the future, often exciting or beneficial opportunities. it is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.48, + "finishTimestamp": 49.32 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.84, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 4.34 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md index a7c5acbe452..9a5e4ff7dc6 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-110 --- - + # --description-- @@ -35,3 +32,47 @@ This noun describes a strong feeling of enthusiasm or excitement for something o ### --feedback-- In this context, this adjective means that a feeling, especially a positive one like enthusiasm, can spread from one person to others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 49.52, + "finishTimestamp": 51.74 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.22, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.72 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md index 0578945ebcc..c64025643be 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-111 --- - + # --description-- @@ -51,3 +48,47 @@ This adjective describes something that arouses curiosity or is enjoyable and en ### --feedback-- This adjective means being in touch with others or having easy access to information, especially through technology. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 51.94, + "finishTimestamp": 56.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.10, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 5.60 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md index bc02e1710e1..fe30597a170 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-112 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on the enthusiasm and positivity in Sarah's statement. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.28, + "finishTimestamp": 55.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 6.26, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob. Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 6.46, + "finishTime": 10.36, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 10.86 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md index ebba772a320..20eaca5ac90 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md @@ -1,6 +1,5 @@ --- id: 65a533f54a5afeff6c6bb996 -videoId: nLDychdBwUg title: "Dialogue 5: Discussing Open-source Software" challengeType: 21 dashedName: dialogue-5-discussing-open-source-software @@ -13,3 +12,284 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Tom", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sophie", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.5, + "dialogue": { + "text": "Hey, Sophie, what motivates you", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 3.8, + "finishTime": 6.9, + "dialogue": { + "text": "to work on open-source software projects in your free time?", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 7.8, + "finishTime": 10.2, + "dialogue": { + "text": "Well, I love contributing to open-source projects!", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 10.5, + "finishTime": 13, + "dialogue": { + "text": "I really like the sense of community and collaboration.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 13.5, + "finishTime": 15.4, + "dialogue": { + "text": "It's incredible how people from around the world", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 15.4, + "finishTime": 17.5, + "dialogue": { + "text": "come together to create something amazing.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 18.2, + "finishTime": 20.4, + "dialogue": { + "text": "Yeah. I checked out some open-source projects,", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 20.5, + "finishTime": 23.1, + "dialogue": { + "text": "but I admit that I have problems with the amount of time", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 23.1, + "finishTime": 24.3, + "dialogue": { + "text": "it can take to contribute.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 24.7, + "finishTime": 27.1, + "dialogue": { + "text": "Sometimes, it can be so time-consuming.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 27.1, + "finishTime": 29.7, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 29.9, + "finishTime": 33.3, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 33.8, + "finishTime": 36.5, + "dialogue": { + "text": "Open source is all about transparency and accessibility,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 36.5, + "finishTime": 38.4, + "dialogue": { + "text": "and that's something I truly believe in.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 39, + "finishTime": 42.2, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 42.7, + "finishTime": 45.7, + "dialogue": { + "text": "For me, I like the idea of practicing my skills", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 45.7, + "finishTime": 48, + "dialogue": { + "text": "and getting recognition for my contributions.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 48.5, + "finishTime": 51.4, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 52.4, + "finishTime": 56, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 56.4, + "finishTime": 58, + "dialogue": { + "text": "there isn't much you can do to save it.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 58.4, + "finishTime": 61.4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 62.2, + "finishTime": 65.2, + "dialogue": { + "text": "That's true. The sustainability of open-source projects", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 65.2, + "finishTime": 67.5, + "dialogue": { + "text": "is something I'm growing to appreciate more.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 67.8, + "finishTime": 69.2, + "dialogue": { + "text": "Thanks for sharing your motivations.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 69.8, + "finishTime": 71.7, + "dialogue": { + "text": "I think I'll see if I can find a project", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 71.7, + "finishTime": 72.8, + "dialogue": { + "text": "to dedicate some spare time to.", + "align": "left" + } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 73.3 + }, + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 73.8 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md index a463dcea5d0..ee5d378ba03 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-113 --- - + # --description-- @@ -37,3 +34,47 @@ This preposition is used to indicate involvement or engagement in a particular a ### --feedback-- This part of the term refers to the origin or starting point, in this case, indicating that the software's foundational code is open and accessible to all. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md index 2d227ef6fe5..1e409d23632 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-114 --- - + # --description-- @@ -51,3 +48,47 @@ Think about whether Tom is asking about skills or the reasons behind an activity ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md index ab28bfe2622..395d2fa3522 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-115 --- - + # --description-- @@ -20,7 +17,7 @@ Sophie: Well, I love contributing to open-source projects! I really like the sen ## --sentence-- -`I really like the sense of _ and _.` +`Well, I love contributing to open-source projects! I really like the sense of _ and _.` ## --blanks-- @@ -37,3 +34,47 @@ Describes a group of people who share common interests or values, especially in ### --feedback-- Refers to the act of working with someone to produce or create something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md index c9e678c193b..e321ce0b307 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-116 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Sophie's enjoyment comes from personal recognition or somethi ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md index 7b9101449a3..6a2c024d0c1 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-117 --- - + # --description-- @@ -45,3 +42,47 @@ Refers to the earth or the globe. ### --feedback-- Indicates the act of joining with others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md index d2ba30725da..3917f0f08f3 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-118 --- - + # --description-- @@ -51,3 +48,47 @@ Sophie talks about working as a group. Is it about being famous or doing somethi ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md index a0b608d8342..a41f1bfc8cb 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-119 --- - + # --description-- @@ -20,7 +17,7 @@ Tom: Yeah. I checked some open-source projects, but I admit that I have problems ## --sentence-- -`Yeah. I checked some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` +`Yeah, I checked out some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` ## --blanks-- @@ -37,3 +34,47 @@ This verb means to confess or acknowledge something, often reluctantly. ### --feedback-- This noun is used to describe the quantity or measure of something, in this case, referring to time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 23.34 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.28, + "dialogue": { + "text": "Yeah, I checked out some open-source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.78 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md index 6bcebcf1558..64acf0261ac 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-120 --- - + # --description-- @@ -18,7 +15,7 @@ Tom "Sometimes, it can be so time-consuming." ## --sentence-- -`Sometimes, it can be _ time-_.` +`Sometimes it can be _ time-_.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to emphasize the degree of something, in this case, how much t ### --feedback-- This word describes activities that use up a lot of time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 23.52, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.64, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.14 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md index 2bbaf6f322f..a2ad29fdb26 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-121 --- - + # --description-- @@ -51,3 +48,56 @@ Think about if Tom says the projects are easy or something else. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Yeah, I checked out some open source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 7.46, + "finishTime": 10.10, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 10.60 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md index 26975fa42d5..52145efc9dc 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-122 --- - + # --description-- @@ -21,7 +18,7 @@ For example, if you say: `I decided to learn a new language and practice every d ## --sentence-- -`It can _ a _.` +`I understand, Tom. It can _ a _.` ## --blanks-- @@ -38,3 +35,47 @@ This word is used to talk about something being true or existing. ### --feedback-- This word means a promise to do something or give your time to it, showing you are ready to work hard and keep your word. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 28.72 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md index 4232fcd5dbb..10d1d55dd1f 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-123 --- - + # --description-- @@ -35,3 +32,47 @@ This verb, in this context, means to tolerate or bear, especially when talking a ### --feedback-- This adjective describes something not open or accessible to the general public or kept for the use of a specific person or group. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md index 25acc5b187b..4920280d317 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-124 --- - + # --description-- @@ -35,3 +32,47 @@ This word, ending in `-ing`, means to observe or witness something happening.. ### --feedback-- Also ending in `-ing`, this word is used to describe the state or condition of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md index e4878ae4f6c..feb206c8d3b 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-125 --- - + # --description-- @@ -37,3 +34,51 @@ This word means being open and clear about things. It ends with `-y`, showing it ### --feedback-- This word is about making things easy for everyone to use or get. It ends with `-ity`, showing it's about the state of being accessible. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 32.52, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 5.74, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.24 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md index 2e6e266c6ab..b1b1c1ca42c 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-126 --- - + # --description-- -Sophie expresses her thoughts on open-source projects.. +Sophie expresses her thoughts on open-source projects. # --question-- @@ -51,3 +48,56 @@ Reflect on Sophie's belief in open source and its benefits. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 7.16, + "dialogue": { + "text": "I understand, Tom. It can be a commitment, but I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.56, + "finishTime": 12.10, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 12.60 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md index 9ef306c9252..e6c5fe030c7 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-127 --- - + # --description-- @@ -35,3 +32,51 @@ This noun refers to the quality of being open and clear, especially about proces ### --feedback-- This noun describes something that provides a reason or incentive for someone to act in a certain way or to put in more effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 41.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md index bbaba54e9e1..e05f1982063 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-128 --- - + # --description-- @@ -37,3 +34,51 @@ This verb means to perform an activity or exercise repeatedly or regularly in or ### --feedback-- This noun refers to the action or process of acknowledging someone's efforts, achievements, or qualities. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 41.5, + "finishTimestamp": 47.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.62, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.12 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md index a821137445a..5d15ffd7545 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-129 --- - + # --description-- @@ -35,3 +32,51 @@ This adjective is used to describe something that is very good or impressive. ### --feedback-- This adjective means having the ability, power, or qualities necessary to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 47.54, + "finishTimestamp": 50.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.9, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.4 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md index 76ee25756a6..045d8463245 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-130 --- - + # --description-- @@ -51,3 +48,69 @@ Reflect on whether Tom's attraction to open-source is about tight schedules. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 50.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.42, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.88, + "finishTime": 10.2, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 10.72, + "finishTime": 13.62, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 14.12 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md index f47924c5a21..763fa02b646 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-131 --- - + # --description-- @@ -18,7 +15,7 @@ Sophie: Also, when software becomes obsolete because it's no longer maintained, ## --sentence-- -`Also, when software becomes _, there isn't _ you can do to _ it.` +`Also, when software becomes _ because it's no longer maintained, there isn't _ you can do to _ it.` ## --blanks-- @@ -43,3 +40,51 @@ This word is used to indicate a small amount or degree; not a lot. ### --feedback-- This verb means to keep safe or rescue from harm or danger, in this context, to try and make something usable again. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md index 27b0dbb43cf..a187bb8b293 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-132 --- - + # --description-- @@ -43,3 +40,51 @@ Something that once was true or possible is not the case anymore. ### --feedback-- This contraction of `is not` is used to express the negation of the statement that follows, indicating a limitation or impossibility. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md index 8941733f8b9..ca97fa188f9 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-133 --- - + # --description-- @@ -51,3 +48,51 @@ It can't be used effectively anymore ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md index e225360b121..baadc6b07e8 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-134 --- - + # --description-- @@ -18,7 +15,7 @@ AUDIO REFERENCE: ## --sentence-- -`With open-_, there's always a _ for continuous improvement.` +`With open _, there's always a _ for continuous improvement.` ## --blanks-- @@ -35,3 +32,51 @@ Refers to a model where the source code is available for anyone to see, modify, ### --feedback-- This noun means an opportunity or possibility for something to happen or be done, especially something desirable. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md index 410699942ed..15c83340f6f 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-135 --- - + # --description-- @@ -35,3 +32,51 @@ It indicates an ongoing, unending process of enhancement or development. ### --feedback-- It refers to the act of making something better, more effective, or more efficient. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md index a8c886124e7..7718697bd96 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-137 --- - + # --description-- @@ -27,3 +24,51 @@ Tom: The sustainability of open-source projects is something I'm growing to appr ### --feedback-- It refers to the ongoing development of open-source projects over the long term. it ends with `-y`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md index dcc88c43208..d6ae5f89d89 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-138 --- - + # --description-- -`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time,` means they might not like them at first, but after some timethey start to like them more. +`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time` means they might not like them at first, but after some timethey start to like them more. # --fillInTheBlank-- @@ -34,4 +31,52 @@ This word means being able to continue over time in a good way. ### --feedback-- -Starting to like something more as you understand it better. +Starting to like something more as you understand it better. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md index ecd1d6e7c95..abc9cf2415f 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-139 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on Tom's statement about sustainability and appreciation, not complexity ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md index a6a32b631e8..87c40eaf830 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-140 --- - + # --description-- @@ -47,3 +44,51 @@ This verb means to discover or locate something after searching for it. ### --feedback-- Describes time that is available to use as you wish, not taken up by work or other obligations. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md index bd2fddb1bb4..52d0740b1db 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-141 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on whether Tom's interest is in language learning or engaging in a proje ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md index ea7dbd6dc1e..05dc28f6ddc 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-1 --- - + # --description-- @@ -18,7 +15,7 @@ Listen to what Brian asks Maria. Pay attention to the verbs he uses. ## --sentence-- -`Hey Maria, I _ a question. Do you know what _ the team?` +`Maria, I _ a question. Do you know what _ the team?` ## --blanks-- @@ -35,3 +32,47 @@ This verb is used when someone is in possession of something or wants to express ### --feedback-- This word means to give someone a reason to do something. This verb in conjugated in the third person. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 3.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.02 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md index d39e86e67e9..ef6b246a2e4 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-2 --- - + # --description-- @@ -39,3 +36,47 @@ This word is used to indicate the reason or cause of something. It is conjugated ### --feedback-- It ends with `-ed` because it's an adjective that comes from a verb. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 3.92, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.50, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.00 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md index 5c39c1c7312..050241fa5e6 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-3 --- - + # --description-- @@ -20,7 +17,7 @@ Listen to the audio and complete the sentence. ## --sentence-- -`Hey Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` +`Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` ## --blanks-- @@ -37,3 +34,56 @@ Think about the word that means to give someone a reason to do something right n ### --feedback-- This word describes how someone feels when they have a reason or desire to do something. This word ends with `-ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md index 4a6aa89ed04..90a6bbe82b3 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md @@ -5,20 +5,17 @@ challengeType: 19 dashedName: task-4 --- - + # --description-- -In the dialogue, Brian asks three questions but they are all connected. +In the dialogue, Brian asks a couple of related questions. # --question-- ## --text-- -`What is Brian asking Maria about?` +What is Brian asking Maria about? ## --answers-- @@ -51,3 +48,56 @@ The conversation is centered around motivation, not the physical location of whe ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md index 3e923e63532..f725307b614 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-21 --- - + # --description-- @@ -36,3 +33,46 @@ This word means working together with others on a project or task. It ends with This word means thinking of many ideas together with a group of people. It ends with `-ing`. +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md index 1c4102ed1d3..2522ee2b5e1 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-22 --- - + # --description-- @@ -51,3 +48,47 @@ Maria refers to her creative team, not her friends, as her collaborators. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.28 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.28 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md index c3f28429a68..ab0e4646869 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-23 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to create or produce something, especially ideas or solutions. ### --feedback-- This word refers to ideas or plans that are used in thinking, discussion, or creating something new. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 41.84, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.78, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.28 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md index c2510030f2c..8795bdf6d10 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-24 --- - + # --description-- @@ -51,3 +48,56 @@ Collaborating with the creative team ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.70, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.14, + "finishTime": 7.92, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 8.42 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md index 3c6ee35860c..b801e7efce9 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-25 --- - + # --description-- @@ -35,3 +32,47 @@ This word means working together with others to achieve a goal. This word is cap ### --feedback-- This word refers to the use of imagination or original ideas to create something. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 48.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.22 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md index a9680b0824a..75c938c595f 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-27 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to find something or someone without planning to, especially pro ### --feedback-- This word is used for problems with machines or computers that need special knowledge to understand or fix. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md index 5ee0b89f981..89a97ac83d7 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-29 --- - + # --description-- @@ -27,3 +24,47 @@ When something is `frustrating`, it makes you feel upset or annoyed because you ### --feedback-- This word is used when something makes you feel upset or annoyed because it is difficult or impossible to deal with. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 53.02, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.50, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.00 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md index 1f9e7b21387..02733f0f66c 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-30 --- - + # --description-- @@ -51,3 +48,65 @@ Does having many ideas make Brian frustrated, or is it something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 5.02, + "finishTime": 9.34, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 9.74, + "finishTime": 11.24, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 11.74 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md index 3dddb17e8ef..47e9d5633b4 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-31 --- - + # --description-- @@ -35,3 +32,47 @@ This word means little problems with things like computers or apps. When there a ### --feedback-- This word means to make an effort to do something, especially when it's hard. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md index fe21921444c..ce9ced73581 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-33 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether taking a break is mentioned as a way to deal with glitches. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md index 69d94c303e5..7c44898f823 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-34 --- - + # --description-- @@ -37,3 +34,47 @@ This word means being very excited or eager about something. It's like when you ### --feedback-- This word means finding a way to fix a problem. It's like when you figure out the answer to a difficult question. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.76, + "finishTimestamp": 65.66 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.90, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.40 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md index 0365cb0e9f0..17d79cd22ec 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md @@ -6,10 +6,7 @@ dashedName: task-36 --- - + # --description-- @@ -52,3 +49,56 @@ Reflect on whether the speed of solving problems is what Maria highlights as mot ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.96, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.7, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.16, + "finishTime": 8.84, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 9.34 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md index 7525fdadd5f..39df7aceed5 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-37 --- - + # --description-- @@ -18,7 +15,7 @@ In this part of the conversation, Brian talks about how the talk made him feel a ## --sentence-- -`Yeah. Wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` +`Yeah, wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` ## --blanks-- @@ -35,3 +32,47 @@ This word means something that gives you energy or a reason to do something. It' ### --feedback-- This word means giving something that you have to others. It's like when you tell someone your ideas or feelings. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 70.38, + "finishTimestamp": 76.10 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 6.72, + "dialogue": { + "text": "Yeah, wow. You know what? This was a really motivating talk. Thanks for sharing your thoughts.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.22 + } + ] +} +``` diff --git a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md index 6bb2b29cd3b..b1bcee11103 100644 --- a/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md +++ b/curriculum/challenges/korean/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-136 --- - + # --description-- @@ -51,3 +48,60 @@ Reflect on the connection between updates and user experience Sophie suggests. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.02, + "finishTime": 10.02, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md b/curriculum/challenges/portuguese/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md index 3bb4ae814e1..27a30d49f38 100644 --- a/curriculum/challenges/portuguese/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md +++ b/curriculum/challenges/portuguese/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md @@ -26,7 +26,7 @@ Exemplo: # --instructions-- -É hora de fazer uma pausa com o Camper Cat e conhecer o colega Zersiax (@zersiax), um campeão de acessibilidade e também usuário de leitor de tela. Para ouvir um clipe de seu leitor de tela em ação, adicione o elemento `audio` após o elemento `p`. Inclua o atributo `controls`. Em seguida, coloque um elemento `source` dentro da tag `audio` com o atributo `src` definido como `https://s3.amazonaws.com/freecodecamp/screen-reader.mp3` e o atributo `type` definido como `"audio/mpeg"`. +É hora de fazer uma pausa com o Camper Cat e conhecer o colega Zersiax (@zersiax), um campeão de acessibilidade e também usuário de leitor de tela. Para ouvir um clipe de seu leitor de tela em ação, adicione o elemento `audio` após o elemento `p`. Inclua o atributo `controls`. Then place a `source` element inside the `audio` tags with the `src` attribute set to `https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3` and `type` attribute set to `"audio/mpeg"`. **Observação:** o clipe de áudio pode parecer rápido e difícil de entender, mas é uma velocidade normal para usuários de leitores de tela. @@ -70,7 +70,7 @@ O valor do atributo `src` na tag `source` deve ser exatamente igual ao link nas ```js assert( $('source').attr('src') === - 'https://s3.amazonaws.com/freecodecamp/screen-reader.mp3' + 'https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3' ); ``` @@ -108,7 +108,7 @@ assert($('source').attr('type') === 'audio/mpeg');

A sound clip of Zersiax's screen reader in action.

diff --git a/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md b/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md index 2a034a89157..9544c7b9a32 100644 --- a/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md +++ b/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md @@ -93,7 +93,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -186,7 +186,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md b/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md index 027acb42fde..3c92c417668 100644 --- a/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md +++ b/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md @@ -102,7 +102,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -198,7 +198,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md b/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md index a2d5dd99a4a..a4e29baacf4 100644 --- a/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md +++ b/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md @@ -95,7 +95,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -190,7 +190,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md b/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md index 0533a449e64..e955973c2f8 100644 --- a/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md +++ b/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md @@ -98,7 +98,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -192,7 +192,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md new file mode 100644 index 00000000000..47a2bcd6988 --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md @@ -0,0 +1,887 @@ +--- +id: 5e44413e903586ffb414c94e +title: Build a Budget App Project +challengeType: 23 +forumTopicId: 462361 +dashedName: build-a-budget-app-project +--- + +# --description-- + +Complete the `Category` class. It should be able to instantiate objects based on different budget categories like *food*, *clothing*, and *entertainment*. When objects are created, they are passed in the name of the category. The class should have an instance variable called `ledger` that is a list. The class should also contain the following methods: + +- A `deposit` method that accepts an amount and description. If no description is given, it should default to an empty string. The method should append an object to the ledger list in the form of `{"amount": amount, "description": description}`. +- A `withdraw` method that is similar to the `deposit` method, but the amount passed in should be stored in the ledger as a negative number. If there are not enough funds, nothing should be added to the ledger. This method should return `True` if the withdrawal took place, and `False` otherwise. +- A `get_balance` method that returns the current balance of the budget category based on the deposits and withdrawals that have occurred. +- A `transfer` method that accepts an amount and another budget category as arguments. The method should add a withdrawal with the amount and the description "Transfer to [Destination Budget Category]". The method should then add a deposit to the other budget category with the amount and the description "Transfer from [Source Budget Category]". If there are not enough funds, nothing should be added to either ledgers. This method should return `True` if the transfer took place, and `False` otherwise. +- A `check_funds` method that accepts an amount as an argument. It returns `False` if the amount is greater than the balance of the budget category and returns `True` otherwise. This method should be used by both the `withdraw` method and `transfer` method. + +When the budget object is printed it should display: + +- A title line of 30 characters where the name of the category is centered in a line of `*` characters. +- A list of the items in the ledger. Each line should show the description and amount. The first 23 characters of the description should be displayed, then the amount. The amount should be right aligned, contain two decimal places, and display a maximum of 7 characters. +- A line displaying the category total. + +Here is an example usage: + +```py +food = Category("Food") +food.deposit(1000, "deposit") +food.withdraw(10.15, "groceries") +food.withdraw(15.89, "restaurant and more food for dessert") +clothing = Category("Clothing") +food.transfer(50, clothing) +print(food) +``` + +And here is an example of the output: + +```bash +*************Food************* +initial deposit 1000.00 +groceries -10.15 +restaurant and more foo -15.89 +Transfer to Clothing -50.00 +Total: 923.96 +``` + +Besides the `Category` class, create a function (outside of the class) called `create_spend_chart` that takes a list of categories as an argument. It should return a string that is a bar chart. + +The chart should show the percentage spent in each category passed in to the function. The percentage spent should be calculated only with withdrawals and not with deposits. Down the left side of the chart should be labels 0 - 100. The "bars" in the bar chart should be made out of the "o" character. The height of each bar should be rounded down to the nearest 10. The horizontal line below the bars should go two spaces past the final bar. Each category name should be written vertically below the bar. There should be a title at the top that says "Percentage spent by category". + +This function will be tested with up to four categories. + +Look at the example output below very closely and make sure the spacing of the output matches the example exactly. + +```bash +Percentage spent by category +100| + 90| + 80| + 70| + 60| o + 50| o + 40| o + 30| o + 20| o o + 10| o o o + 0| o o o + ---------- + F C A + o l u + o o t + d t o + h + i + n + g +``` + +# --hints-- + +The `deposit` method should create a specific object in the ledger instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit(self): + self.food.deposit(900, "deposit") + actual = self.food.ledger[0] + expected = {"amount": 900, "description": "deposit"} + self.assertEqual(actual, expected, 'Expected "deposit" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `deposit` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit_no_description(self): + self.food.deposit(45.56) + actual = self.food.ledger[0] + expected = {"amount": 45.56, "description": ""} + self.assertEqual(actual, expected, 'Expected calling "deposit" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should create a specific object in the `ledger` instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": "milk, cereal, eggs, bacon, bread"} + self.assertEqual(actual, expected, 'Expected "withdraw" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `withdraw` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": ""} + self.assertEqual(actual, expected, 'Expected "withdraw" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `True` if the withdrawal took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + self.assertEqual(good_withdraw, True, 'Expected "withdraw" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `food.deposit(900, "deposit")` and `food.withdraw(45.67, "milk, cereal, eggs, bacon, bread")` should return a balance of `854.33`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_get_balance(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.get_balance() + expected = 854.33 + self.assertEqual(actual, expected, 'Expected balance to be 854.33') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `transfer` method on a category object should create a specific ledger item in that category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.food.ledger[2] + expected = {"amount": -transfer_amount, "description": "Transfer to Entertainment"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `True` if the transfer took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + self.assertEqual(good_transfer, True, 'Expected "transfer" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `transfer` on a category object should reduce the balance in the category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + food_balance_before = self.food.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + food_balance_after = self.food.get_balance() + self.assertEqual(food_balance_before - food_balance_after, transfer_amount, 'Expected "transfer" method to reduce balance in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should increase the balance of the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + entertainment_balance_before = self.entertainment.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + entertainment_balance_after = self.entertainment.get_balance() + self.assertEqual(entertainment_balance_after - entertainment_balance_before, transfer_amount, 'Expected "transfer" method to increase balance in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should create a specific ledger item in the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.entertainment.ledger[0] + expected = {"amount": transfer_amount, "description": "Transfer from Food"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `False` if the amount passed to the method is greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(20) + expected = False + self.assertEqual(actual, expected, 'Expected "check_funds" method to be False') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `True` if the amount passed to the method is not greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(10) + expected = True + self.assertEqual(actual, expected, 'Expected "check_funds" method to be True') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `False` if the withdrawal didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_funds(self): + self.food.deposit(100, "deposit") + good_withdraw = self.food.withdraw(100.10) + self.assertEqual(good_withdraw, False, 'Expected "withdraw" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `False` if the transfer didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer_no_funds(self): + self.food.deposit(100, "deposit") + good_transfer = self.food.transfer(200, self.entertainment) + self.assertEqual(good_transfer, False, 'Expected "transfer" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Printing a `Category` instance should give a different string representation of the object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_to_string(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + self.food.transfer(20, self.entertainment) + actual = str(self.food) + expected = "*************Food*************\\ndeposit 900.00\\nmilk, cereal, eggs, bac -45.67\\nTransfer to Entertainme -20.00\\nTotal: 834.33" + self.assertEqual(actual, expected, 'Expected different string representation of object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +` + const out = runPython(testCode); + assert(out); + } +}) +``` + +`create_spend_chart` should print a different chart representation. Check that all spacing is exact. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + self.business = budget.Category("Business") + + def test_create_spend_chart(self): + self.food.deposit(900, "deposit") + self.entertainment.deposit(900, "deposit") + self.business.deposit(900, "deposit") + self.food.withdraw(105.55) + self.entertainment.withdraw(33.40) + self.business.withdraw(10.99) + actual = budget.create_spend_chart([self.business, self.food, self.entertainment]) + expected = "Percentage spent by category\\n100| \\n 90| \\n 80| \\n 70| o \\n 60| o \\n 50| o \\n 40| o \\n 30| o \\n 20| o o \\n 10| o o \\n 0| o o o \\n ----------\\n B F E \\n u o n \\n s o t \\n i d e \\n n r \\n e t \\n s a \\n s i \\n n \\n m \\n e \\n n \\n t " + self.assertEqual(actual, expected, 'Expected different chart representation. Check that all spacing is exact.') +`); + + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Category: + pass + +def create_spend_chart(categories): + pass +``` + +# --solutions-- + +```py +class Category: + + def __init__(self, name): + self.name = name + self.ledger = [] + self.balance = 0 + self.spent = 0 + + def __str__(self): + first_line = f'{self.name.center(30, "*")}\n' + lines = '' + total = f'Total: {format(self.balance, ".2f")}' + + for n in range(len(self.ledger)): + descr = self.ledger[n]["description"][:23] + am = format(float(self.ledger[n]["amount"]), ".2f")[:7] + lines = lines + f'{descr:<23}{am:>7}\n' + + return f'{first_line}{lines}{total}' + + def deposit(self, amount, description=''): + self.ledger.append({ + 'amount': float(amount), + 'description': description + }) + self.balance = self.balance + float(amount) + + def withdraw(self, amount, description=''): + if self.check_funds(amount): + self.ledger.append({ + 'amount': -float(amount), + 'description': description + }) + self.balance = self.balance - float(amount) + self.spent = self.spent + float(amount) + return True + else: + return False + + def get_balance(self): + return self.balance + + def transfer(self, amount, category): + if self.check_funds(amount): + # withdraw + self.ledger.append({ + 'amount': -float(amount), + 'description': f'Transfer to {category.name}' + }) + self.balance = self.balance - float(amount) + # deposit + category.deposit(amount, f'Transfer from {self.name}') + + return True + else: + return False + + def check_funds(self, amount): + if float(amount) > self.balance: + return False + else: + return True + + +def create_spend_chart(categories): + total_expenses = 0 + obj = {} + col1 = [] + str = [] + final_str = 'Percentage spent by category\n' + label_max_length = 0 + label_strings = [] + + for category in categories: + total_expenses = total_expenses + category.spent + obj[category.name] = {'expenses': category.spent} + obj[category.name]['label'] = list(category.name) + if len(obj[category.name]['label']) > label_max_length: + label_max_length = len(obj[category.name]['label']) + + for category in categories: + obj[category.name]['percent'] = ( + (category.spent / total_expenses * 100) // 10) * 10 + obj[category.name]['column'] = [] + for i in range(0, 110, 10): + if obj[category.name]['percent'] >= i: + obj[category.name]['column'].insert(0, 'o') + else: + obj[category.name]['column'].insert(0, ' ') + + for i in range(0, 110, 10): + col1.insert(0, i) + + for i in range(11): + str.append("") + for key in obj: + str[i] += (f'{obj[key]["column"][i]} ') + final_str += f'{col1[i]:>3}| {str[i]}\n' + final_str += f' {"-"*(1+3*len(obj))}\n ' + + for i in range(label_max_length): + label_strings.append(' ') + for k in obj: + if len(obj[k]['label']) < label_max_length: + obj[k]['label'].extend( + f'{" "*(label_max_length-len(obj[k]["label"]))}') + + label_strings[i] += f'{obj[k]["label"][i]} ' + if i < label_max_length - 1: + label_strings[i] += '\n ' + final_str += label_strings[i] + + print(final_str) + return (final_str) + +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md new file mode 100644 index 00000000000..ef719adc3a7 --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md @@ -0,0 +1,869 @@ +--- +id: 5e444147903586ffb414c94f +title: Build a Polygon Area Calculator Project +challengeType: 23 +forumTopicId: 462363 +dashedName: build-a-polygon-area-calculator-project +--- + +# --description-- + +In this project you will use object oriented programming to create a `Rectangle` class and a `Square` class. The `Square` class should be a subclass of `Rectangle`, and inherit its methods and attributes. + +## Rectangle class + +When a Rectangle object is created, it should be initialized with `width` and `height` attributes. The class should also contain the following methods: + +- `set_width` +- `set_height` +- `get_area`: Returns area (`width * height`) +- `get_perimeter`: Returns perimeter (`2 * width + 2 * height`) +- `get_diagonal`: Returns diagonal (`(width ** 2 + height ** 2) ** .5`) +- `get_picture`: Returns a string that represents the shape using lines of "\*". The number of lines should be equal to the height and the number of "\*" in each line should be equal to the width. There should be a new line (`\n`) at the end of each line. If the width or height is larger than 50, this should return the string: "Too big for picture.". +- `get_amount_inside`: Takes another shape (square or rectangle) as an argument. Returns the number of times the passed in shape could fit inside the shape (with no rotations). For instance, a rectangle with a width of 4 and a height of 8 could fit in two squares with sides of 4. + +Additionally, if an instance of a `Rectangle` is represented as a string, it should look like: `Rectangle(width=5, height=10)` + +## Square class + +The `Square` class should be a subclass of `Rectangle`. When a `Square` object is created, a single side length is passed in. The `__init__` method should store the side length in both the `width` and `height` attributes from the `Rectangle` class. + +The `Square` class should be able to access the `Rectangle` class methods but should also contain a `set_side` method. If an instance of a `Square` is represented as a string, it should look like: `Square(side=9)` + +Additionally, the `set_width` and `set_height` methods on the `Square` class should set both the width and height. + +## Usage example + +```py +rect = Rectangle(10, 5) +print(rect.get_area()) +rect.set_height(3) +print(rect.get_perimeter()) +print(rect) +print(rect.get_picture()) + +sq = Square(9) +print(sq.get_area()) +sq.set_side(4) +print(sq.get_diagonal()) +print(sq) +print(sq.get_picture()) + +rect.set_height(8) +rect.set_width(16) +print(rect.get_amount_inside(sq)) +``` + +That code should return: + +```bash +50 +26 +Rectangle(width=10, height=3) +********** +********** +********** + +81 +5.656854249492381 +Square(side=4) +**** +**** +**** +**** + +8 +``` + +# --hints-- + +The `Square` class should be a subclass of the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_subclass(self): + actual = issubclass(shape_calculator.Square, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a subclass of the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `Square` class should be a distinct class from the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_distinct_classes(self): + actual = shape_calculator.Square is not shape_calculator.Rectangle + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a distinct class from the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +A square object should be an instance of the `Square` class and the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_is_square_and_rectangle(self): + actual = isinstance(self.sq, shape_calculator.Square) and isinstance(self.sq, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected square object to be an instance of the Square class and the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Rectangle(3, 6)` should be `Rectangle(width=3, height=6)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_string(self): + actual = str(self.rect) + expected = "Rectangle(width=3, height=6)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle to be "Rectangle(width=3, height=6)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Square(5)` should be `Square(side=5)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_string(self): + actual = str(self.sq) + expected = "Square(side=5)" + self.assertEqual(actual, expected, 'Expected string representation of square to be "Square(side=5)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_area()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_area(self): + actual = self.rect.get_area() + expected = 18 + self.assertEqual(actual, expected, 'Expected area of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_area()` should return `25`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_area(self): + actual = self.sq.get_area() + expected = 25 + self.assertEqual(actual, expected, 'Expected area of square to be 25') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_perimeter()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_perimeter(self): + actual = self.rect.get_perimeter() + expected = 18 + self.assertEqual(actual, expected, 'Expected perimeter of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_perimeter()` should return `20`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_perimeter(self): + actual = self.sq.get_perimeter() + expected = 20 + self.assertEqual(actual, expected, 'Expected perimeter of square to be 20') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_diagonal()` should return `6.708203932499369`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_diagonal(self): + actual = self.rect.get_diagonal() + expected = 6.708203932499369 + self.assertEqual(actual, expected, 'Expected diagonal of rectangle to be 6.708203932499369') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_diagonal()` should return `7.0710678118654755`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_diagonal(self): + actual = self.sq.get_diagonal() + expected = 7.0710678118654755 + self.assertEqual(actual, expected, 'Expected diagonal of square to be 7.0710678118654755') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Rectangle` class should have a different string representation after setting new values. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_set_attributes(self): + self.rect.set_width(7) + self.rect.set_height(8) + actual = str(self.rect) + expected = "Rectangle(width=7, height=8)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle after setting new values to be "Rectangle(width=7, height=8)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_side()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_side(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_width()` or `set_height()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_height(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') + self.sq.set_width(4) + actual = str(self.sq) + expected = "Square(side=4)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting width to be "Square(side=4)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Rectangle` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_picture(self): + self.rect.set_width(7) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "*******\\n*******\\n*******\\n" + self.assertEqual(actual, expected, 'Expected rectangle picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Square` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_picture(self): + self.sq.set_side(2) + actual = self.sq.get_picture() + expected = "**\\n**\\n" + self.assertEqual(actual, expected, 'Expected square picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return the string `Too big for picture.` if the `width` or `height` attributes are larger than `50`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_big_picture(self): + self.rect.set_width(51) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "Too big for picture." + self.assertEqual(actual, expected, 'Expected message: "Too big for picture."') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(15,10).get_amount_inside(Square(5))` should return `6`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + self.sq = shape_calculator.Square(5) + + def test_get_amount_inside(self): + self.rect.set_height(10) + self.rect.set_width(15) + actual = self.rect.get_amount_inside(self.sq) + expected = 6 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 6.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(4,8).get_amount_inside(Rectangle(3, 6))` should return `1`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_two_rectangles(self): + rect2 = shape_calculator.Rectangle(4, 8) + actual = rect2.get_amount_inside(self.rect) + expected = 1 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 1.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(2,3).get_amount_inside(Rectangle(3, 6))` should return `0`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_none(self): + rect2 = shape_calculator.Rectangle(2, 3) + actual = rect2.get_amount_inside(self.rect) + expected = 0 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 0.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Rectangle: + pass + +class Square: + pass +``` + +# --solutions-- + +```py +class Rectangle: + def __init__(self, width, height): + self.width = width + self.height = height + + def __str__(self): + return f'Rectangle(width={self.width}, height={self.height})' + + def set_width(self, width): + self.width = width + + def set_height(self, height): + self.height = height + + def get_area(self): + area = self.width * self.height + return area + + def get_perimeter(self): + perimeter = self.width * 2 + self.height * 2 + return perimeter + + def get_diagonal(self): + diagonal = (self.width ** 2 + self.height ** 2) ** 0.5 + return diagonal + + def get_picture(self): + if self.width < 50 and self.height < 50: + picture = f'{"*"*self.width}\n'*self.height + return picture + else: + return 'Too big for picture.' + + def get_amount_inside(self, polygon): + h_number = self.height // polygon.height + w_number = self.width // polygon.width + repetition = h_number * w_number + return repetition + + +class Square(Rectangle): + def __init__(self, side): + self.width = side + self.height = side + + def __str__(self): + return f'Square(side={self.width})' + + def set_width(self, side): + self.width = side + self.height = side + + def set_height(self, side): + self.height = side + self.width = side + + def set_side(self,side): + self.width = side + self.height = side + +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md new file mode 100644 index 00000000000..94cf5c682de --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md @@ -0,0 +1,300 @@ +--- +id: 5e44414f903586ffb414c950 +title: Build a Probability Calculator Project +challengeType: 23 +forumTopicId: 462364 +dashedName: build-a-probability-calculator-project +--- + +# --description-- + +Suppose there is a hat containing 5 blue balls, 4 red balls, and 2 green balls. What is the probability that a random draw of 4 balls will contain at least 1 red ball and 2 green balls? While it would be possible to calculate the probability using advanced mathematics, an easier way is to write a program to perform a large number of experiments to estimate an approximate probability. + +For this project, you will write a program to determine the approximate probability of drawing certain balls randomly from a hat. + +First, create a `Hat` class in `main.py`. The class should take a variable number of arguments that specify the number of balls of each color that are in the hat. For example, a class object could be created in any of these ways: + +```py +hat1 = Hat(yellow=3, blue=2, green=6) +hat2 = Hat(red=5, orange=4) +hat3 = Hat(red=5, orange=4, black=1, blue=0, pink=2, striped=9) +``` + +A hat will always be created with at least one ball. The arguments passed into the hat object upon creation should be converted to a `contents` instance variable. `contents` should be a list of strings containing one item for each ball in the hat. Each item in the list should be a color name representing a single ball of that color. For example, if your hat is `{"red": 2, "blue": 1}`, `contents` should be `["red", "red", "blue"]`. + +The `Hat` class should have a `draw` method that accepts an argument indicating the number of balls to draw from the hat. This method should remove balls at random from `contents` and return those balls as a list of strings. The balls should not go back into the hat during the draw, similar to an urn experiment without replacement. If the number of balls to draw exceeds the available quantity, return all the balls. + +Next, create an `experiment` function in `main.py` (not inside the `Hat` class). This function should accept the following arguments: + +- `hat`: A hat object containing balls that should be copied inside the function. +- `expected_balls`: An object indicating the exact group of balls to attempt to draw from the hat for the experiment. For example, to determine the probability of drawing 2 blue balls and 1 red ball from the hat, set `expected_balls` to `{"blue":2, "red":1}`. +- `num_balls_drawn`: The number of balls to draw out of the hat in each experiment. +- `num_experiments`: The number of experiments to perform. (The more experiments performed, the more accurate the approximate probability will be.) + +The `experiment` function should return a probability. + +For example, if you want to determine the probability of getting at least two red balls and one green ball when you draw five balls from a hat containing six black, four red, and three green. To do this, you will perform `N` experiments, count how many times `M` you get at least two red balls and one green ball, and estimate the probability as `M/N`. Each experiment consists of starting with a hat containing the specified balls, drawing several balls, and checking if you got the balls you were attempting to draw. + +Here is how you would call the `experiment` function based on the example above with 2000 experiments: + +```py +hat = Hat(black=6, red=4, green=3) +probability = experiment(hat=hat, + expected_balls={"red":2,"green":1}, + num_balls_drawn=5, + num_experiments=2000) +``` + +The output would be something like this: + +```bash +0.356 +``` + +Since this is based on random draws, the probability will be slightly different each time the code is run. + +_Hint: Consider using the modules that are already imported at the top. Do not initialize random seed within the file._ + + +# --hints-- + +Creation of `hat` object should add correct contents. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_class_contents(self): + hat = probability_calculator.Hat(red=3,blue=2) + actual = hat.contents + expected = ["red","red","red","blue","blue"] + self.assertEqual(actual, expected, 'Expected creation of hat object to add correct contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method in `hat` class should reduce number of items in contents. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw(self): + hat = probability_calculator.Hat(red=5,blue=2) + actual = hat.draw(2) + expected = ['blue', 'red'] + self.assertEqual(actual, expected, 'Expected hat draw to return two random items from hat contents.') + actual = len(hat.contents) + expected = 5 + self.assertEqual(actual, expected, 'Expected hat draw to reduce number of items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method should behave correctly when the number of balls to extract is bigger than the number of balls in the hat. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw_2(self): + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + actual = hat.draw(20) + expected = ['yellow', 'yellow', 'yellow', 'yellow', 'yellow', 'red', 'green', 'green', 'green', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'test'] + self.assertEqual(actual, expected, 'Expected hat draw to return all items from hat contents.') + actual = len(hat.contents) + expected = 0 + self.assertEqual(actual, expected, 'Expected hat draw to leave no items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `experiment` method should return a different probability. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_prob_experiment(self): + hat = probability_calculator.Hat(blue=3,red=2,green=6) + probability = probability_calculator.experiment(hat=hat, expected_balls={"blue":2,"green":1}, num_balls_drawn=4, num_experiments=1000) + actual = probability + expected = 0.272 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + probability = probability_calculator.experiment(hat=hat, expected_balls={"yellow":2,"blue":3,"test":1}, num_balls_drawn=20, num_experiments=100) + actual = probability + expected = 1.0 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +# --seed-- + +## --seed-contents-- + +```py +import copy +import random + +class Hat: + pass + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + pass +``` + +# --solutions-- + +```py +import copy +import random + +class Hat: + def __init__(self, **hat): + self.hat = hat + contents = [] + for i in hat: + for j in range(hat[i]): + contents.append(i) + self.contents = contents + + + def draw(self, number): + drawn = [] + if number >= len(self.contents): + drawn.extend(self.contents) + self.contents = [] + else: + for i in range(number): + drawn.append( + self.contents.pop(random.randrange(len(self.contents))) + ) + return drawn + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + expected_balls_list = [] + drawn_list = [] + success = 0 + for i in expected_balls: + for j in range(expected_balls[i]): + expected_balls_list.append(i) + for j in range(num_experiments): + hat_copy = copy.deepcopy(hat) + drawn_list.append(hat_copy.draw(num_balls_drawn)) + exp_ball_list_copy = expected_balls_list[:] + for k in range(len(drawn_list[j])): + try: + ind = exp_ball_list_copy.index(drawn_list[j][k]) + exp_ball_list_copy.pop(ind) + except: + continue + if len(exp_ball_list_copy) == 0: + success += 1 + probability = success/num_experiments + return probability +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md new file mode 100644 index 00000000000..05e60f0b74a --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md @@ -0,0 +1,582 @@ +--- +id: 5e444136903586ffb414c94d +title: Build a Time Calculator Project +challengeType: 23 +forumTopicId: 462360 +dashedName: build-a-time-calculator-project +--- + +# --description-- + +Write a function named `add_time` that takes in two required parameters and one optional parameter: + +- a start time in the 12-hour clock format (ending in AM or PM) +- a duration time that indicates the number of hours and minutes +- (optional) a starting day of the week, case insensitive + +The function should add the duration time to the start time and return the result. + +If the result will be the next day, it should show `(next day)` after the time. If the result will be more than one day later, it should show `(n days later)` after the time, where "n" is the number of days later. + +If the function is given the optional starting day of the week parameter, then the output should display the day of the week of the result. The day of the week in the output should appear after the time and before the number of days later. + +Below are some examples of different cases the function should handle. Pay close attention to the spacing and punctuation of the results. + +```py +add_time('3:00 PM', '3:10') +# Returns: 6:10 PM + +add_time('11:30 AM', '2:32', 'Monday') +# Returns: 2:02 PM, Monday + +add_time('11:43 AM', '00:20') +# Returns: 12:03 PM + +add_time('10:10 PM', '3:30') +# Returns: 1:40 AM (next day) + +add_time('11:43 PM', '24:20', 'tueSday') +# Returns: 12:03 AM, Thursday (2 days later) + +add_time('6:30 PM', '205:12') +# Returns: 7:42 AM (9 days later) +``` + +Do not import any Python libraries. Assume that the start times are valid times. The minutes in the duration time will be a whole number less than 60, but the hour can be any whole number. + +# --hints-- +Calling `add_time('3:30 PM', '2:12')` should return `'5:42 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +import time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period(self): + actual = time_calculator.add_time("3:30 PM", "2:12") + expected = "5:42 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12" to return "5:42 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:55 AM', '3:12')` should return `'3:07 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_different_period(self): + actual = time_calculator.add_time("11:55 AM", "3:12") + expected = "3:07 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:55 AM", "3:12" to return "3:07 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected time to end with `'(next day)'` when it is the next day. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_next_day(self): + actual = time_calculator.add_time("9:15 PM", "5:30") + expected = "2:45 AM (next day)" + self.assertEqual(actual, expected, 'Expected time to end with "(next day)" when it is the next day.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected period to change from `AM` to `PM` at `12:00`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_period_change_at_twelve(self): + actual = time_calculator.add_time("11:40 AM", "0:25") + expected = "12:05 PM" + self.assertEqual(actual, expected, 'Expected period to change from AM to PM at 12:00') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00')` should return `'2:59 AM (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four(self): + actual = time_calculator.add_time("2:59 AM", "24:00") + expected = "2:59 AM (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00" to return "2:59 AM (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05')` should return `'12:04 AM (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later(self): + actual = time_calculator.add_time("11:59 PM", "24:05") + expected = "12:04 AM (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05" to return "12:04 AM (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02')` should return `'6:18 AM (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration(self): + actual = time_calculator.add_time("8:16 PM", "466:02") + expected = "6:18 AM (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02" to return "6:18 AM (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected adding `0:00` to return the initial time. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_no_change(self): + actual = time_calculator.add_time("5:01 AM", "0:00") + expected = "5:01 AM" + self.assertEqual(actual, expected, 'Expected adding 0:00 to return initial time.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('3:30 PM', '2:12', 'Monday')`should return `'5:42 PM, Monday'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period_with_day(self): + actual = time_calculator.add_time("3:30 PM", "2:12", "Monday") + expected = "5:42 PM, Monday" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12", "Monday" to return "5:42 PM, Monday"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00', 'saturDay')` should return `'2:59 AM, Sunday (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four_with_day(self): + actual = time_calculator.add_time("2:59 AM", "24:00", "saturDay") + expected = "2:59 AM, Sunday (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00", "saturDay" to return "2:59 AM, Sunday (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05', 'Wednesday')` should return `'12:04 AM, Friday (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later_with_day(self): + actual = time_calculator.add_time("11:59 PM", "24:05", "Wednesday") + expected = "12:04 AM, Friday (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05", "Wednesday" to return "12:04 AM, Friday (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02', 'tuesday')`should return `'6:18 AM, Monday (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration_with_day(self): + actual = time_calculator.add_time("8:16 PM", "466:02", "tuesday") + expected = "6:18 AM, Monday (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02", "tuesday" to return "6:18 AM, Monday (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def add_time(start, duration): + + + + + + return new_time +``` + +# --solutions-- + +```py +def add_time(start, duration, day=''): + start_arr = start[0:-3].split(':') + dur_arr = duration.split(':') + tail = '' + # converting to 24h format + if 'AM' in start: + if start_arr[0] == '12': + start_arr[0] = '00' + elif 'PM' in start: + if start_arr[0] == '12': + start_arr[0] = '12' + else: + start_arr[0] = f'{int(start_arr[0]) + 12}' + + # adding minutes + sum_m = int(start_arr[1]) + int(dur_arr[1]) + if sum_m > 59: + + if (sum_m - 60 * (sum_m//60)) < 10: + mins = f'0{(sum_m - 60 * (sum_m//60))}' + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + + else: + mins = sum_m - 60 * (sum_m//60) + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + else: + if sum_m < 10: + mins = f'0{sum_m}' + else: + mins = sum_m + + #adding hours + sum_h = int(start_arr[0]) + int(dur_arr[0]) + if sum_h < 24: + hours= sum_h + #time_24 = f'{hours}:{mins}' + else: + days_after = sum_h//24 + if days_after == 1: + hours = sum_h - 24 + tail = ' (next day)' + else: + hours = sum_h - 24 * days_after + tail = f' ({days_after} days later)' + + #converting back to AM/PM + if hours == 0: + hours = 12 + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + elif hours < 12: + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + else: + if hours > 12: + hours = hours - 12 + time = f'{hours}:{mins} PM' + final_time = f'{time}{tail}' + + #days of the week + week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] + if day: + day = day.capitalize() + if not tail: + final_time = f'{time}, {day}' + elif tail == ' (next day)': + index = week.index(day) + 1 + if index == 7: + index = 0 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + elif tail: + index = (week.index(day) + days_after) % 7 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + + + print('\n') + print(final_time) + print('\n') + return final_time + +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md new file mode 100644 index 00000000000..4f112fd73c5 --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md @@ -0,0 +1,248 @@ +--- +id: 5e44412c903586ffb414c94c +title: Build an Arithmetic Formatter Project +challengeType: 23 +forumTopicId: 462359 +dashedName: build-an-arithmetic-formatter-project +--- + +# --description-- + +Students in primary school often arrange arithmetic problems vertically to make them easier to solve. For example, "235 + 52" becomes: + +```py + 235 ++ 52 +----- +``` + +Finish the `arithmetic_arranger` function that receives a list of strings which are arithmetic problems, and returns the problems arranged vertically and side-by-side. The function should optionally take a second argument. When the second argument is set to `True`, the answers should be displayed. + +## Example + +Function Call: + +```py +arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"]) +``` + +Output: + +```py + 32 3801 45 123 ++ 698 - 2 + 43 + 49 +----- ------ ---- ----- +``` + +Function Call: + +```py +arithmetic_arranger(["32 + 8", "1 - 3801", "9999 + 9999", "523 - 49"], True) +``` + +Output: + +```py + 32 1 9999 523 ++ 8 - 3801 + 9999 - 49 +---- ------ ------ ----- + 40 -3800 19998 474 +``` + +## Rules + +The function will return the correct conversion if the supplied problems are properly formatted, otherwise, it will **return** a **string** that describes an error that is meaningful to the user. + +- Situations that will return an error: + - If there are **too many problems** supplied to the function. The limit is **five**, anything more will return: `'Error: Too many problems.'` + - The appropriate operators the function will accept are **addition** and **subtraction**. Multiplication and division will return an error. Other operators not mentioned in this bullet point will not need to be tested. The error returned will be: `"Error: Operator must be '+' or '-'."` + - Each number (operand) should only contain digits. Otherwise, the function will return: `'Error: Numbers must only contain digits.'` + - Each operand (aka number on each side of the operator) has a max of four digits in width. Otherwise, the error string returned will be: `'Error: Numbers cannot be more than four digits.'` +- If the user supplied the correct format of problems, the conversion you return will follow these rules: + - There should be a single space between the operator and the longest of the two operands, the operator will be on the same line as the second operand, both operands will be in the same order as provided (the first will be the top one and the second will be the bottom). + - Numbers should be right-aligned. + - There should be four spaces between each problem. + - There should be dashes at the bottom of each problem. The dashes should run along the entire length of each problem individually. (The example above shows what this should look like.) + +# --hints-- + +`arithmetic_arranger(["3801 - 2", "123 + 49"])` should return `3801 123\n- 2 + 49\n------ -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3801 - 2", "123 + 49"]), ' 3801 123\\n- 2 + 49\\n------ -----')`); + } +}) +``` + +`arithmetic_arranger(["1 + 2", "1 - 9380"])` should return `1 1\n+ 2 - 9380\n--- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["1 + 2", "1 - 9380"]), ' 1 1\\n+ 2 - 9380\\n--- ------')`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `3 3801 45 123\n+ 855 - 2 + 43 + 49\n----- ------ ---- -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]), ' 3 3801 45 123\\n+ 855 - 2 + 43 + 49\\n----- ------ ---- -----')`); + } +}) +``` + +`arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"])` should return `11 3801 1 123 1\n+ 4 - 2999 + 2 + 49 - 9380\n---- ------ --- ----- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"]), ' 11 3801 1 123 1\\n+ 4 - 2999 + 2 + 49 - 9380\\n---- ------ --- ----- ------')`); + } +}) +``` + +`arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"])` should return `'Error: Too many problems.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"]), 'Error: Too many problems.')`); + } +}) +``` + +`arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `"Error: Operator must be '+' or '-'."`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Operator must be '+' or '-'.")`); + } +}) +``` + +`arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers cannot be more than four digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers cannot be more than four digits.")`); + } +}) +``` + +`arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers must only contain digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers must only contain digits.")`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "988 + 40"], True)` should return `3 988\n+ 855 + 40\n----- -----\n 858 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "988 + 40"], True), " 3 988\\n+ 855 + 40\\n----- -----\\n 858 1028")`); + } +}) +``` + +`arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True)` should return `32 1 45 123 988\n- 698 - 3801 + 43 + 49 + 40\n----- ------ ---- ----- -----\n -666 -3800 88 172 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True), " 32 1 45 123 988\\n- 698 - 3801 + 43 + 49 + 40\\n----- ------ ---- ----- -----\\n -666 -3800 88 172 1028")`); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def arithmetic_arranger(problems, show_answers=False): + + return problems + +print(f'\n{arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"])}') +``` + +# --solutions-- + +```py +def arithmetic_arranger(problems, result=False): + + lin1 = "" + lin2 = "" + lin3 = "" + lin4 = "" + + if len(problems) > 5: + return 'Error: Too many problems.' + for problem in problems: + [num1, sym, num2] = problem.split() + sign = ['+', '-'] + if sym not in sign: + return ("Error: Operator must be '+' or '-'.") + if len(num1) > 4 or len(num2) > 4: + return ("Error: Numbers cannot be more than four digits.") + if not num1.isnumeric() or not num2.isnumeric(): + return ("Error: Numbers must only contain digits.") + + lin1 += " " + num1 + " " if len(num1) >= len( + num2) else " " * (len(num2) + 2 - len(num1)) + num1 + " " + lin2 += sym + " " + num2 + " " if len(num2) >= len( + num1) else sym + " " * (len(num1) - len(num2) + 1) + num2 + " " + nmax = (len(num1) + 2) if len(num1) >= len(num2) else (len(num2) + 2) + lin3 += "-" * nmax + " " + op = int(num1) + int(num2) if sym == "+" else int(num1) - int(num2) + lin4 += (" " * (nmax - len(str(op)))) + str(op) + " " + + arranged_problems = lin1.rstrip() + "\n" + lin2.rstrip( + ) + "\n" + lin3.rstrip() + if result: + arranged_problems += "\n" + lin4.rstrip() + + return arranged_problems +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md index ed4d025333c..84b10fb783a 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md @@ -23,7 +23,7 @@ Add a new key-value pair to your dictionary. Use the string `species` as the key You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 1 `)) }) @@ -32,7 +32,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have a `species` key with the value `guinea pig` inside your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig"} `)) }) diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md index 9280861fe8f..502a697e729 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md @@ -14,7 +14,7 @@ Now, replace the existent keys with the strings `A` and `B` — one for each nod Your dictionary should have an `A` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "A" in my_graph `)) }) @@ -23,7 +23,7 @@ Your dictionary should have an `A` key. Your `A` key should have `B` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -32,7 +32,7 @@ Your `A` key should have `B` as the value. Your dictionary should have an `B` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "B" in my_graph `)) }) @@ -41,7 +41,7 @@ Your dictionary should have an `B` key. Your `B` key should have `A` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["B"] == "A" `)) }) @@ -50,7 +50,7 @@ Your `B` key should have `A` as the value. Your dictionary should have two keys. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph) == 2 `)) }) diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md index 4aaf3763a00..31d22f7a1ba 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md @@ -16,7 +16,7 @@ Modify your existing dictionary to represent this arrangement. Use a list to rep Your dictionary should have 3 keys — `A`, `B`, and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C"] len(my_graph) == 3 and all(key in my_graph for key in key_list) `)) @@ -26,7 +26,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["A"]` should have the `B` node as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -35,7 +35,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -44,7 +44,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. The value of `my_graph["B"]` should be a list containing the other two nodes. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -53,7 +53,7 @@ The value of `my_graph["B"]` should be a list containing the other two nodes. The value of `my_graph["C"]` should be the connected node. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["C"] == "B" `)) }) diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md index b7336edb977..0430d194dfa 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md @@ -14,7 +14,7 @@ Add one last node, `D`, which is connected with `A` and `C`. Modify your diction Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -24,7 +24,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list `)) }) @@ -33,7 +33,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["A"]) == 2 and "B" in my_graph["A"] and "D" in my_graph["A"] `)) }) @@ -42,7 +42,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -51,7 +51,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -60,7 +60,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list `)) }) @@ -69,7 +69,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["C"]) == 2 and "B" in my_graph["C"] and "D" in my_graph["C"] `)) }) @@ -78,7 +78,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list `)) }) @@ -87,7 +87,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["D"]) == 2 and "A" in my_graph["D"] and "C" in my_graph["D"] `)) }) diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md index be998bd74fc..41a7c0d4f5a 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md @@ -27,7 +27,7 @@ Modify `my_graph["A"]` into a list of tuples, considering the following distance Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -37,7 +37,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list and all(type(i) is tuple for i in my_graph["A"]) `)) }) @@ -46,7 +46,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 3), ("D", 1)] len(my_graph["A"]) == 2 and all(t in my_graph["A"] for t in tuples) `)) diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md index c5daaecf4c4..bd06e5c8f30 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md @@ -16,7 +16,7 @@ Declare an empty function called `shortest_path` and don't forget the `pass` key You should have a `shortest_path` function. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect inspect.isfunction(shortest_path) `)) diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md index 5f298fd1248..0b7f27eadcd 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md @@ -16,7 +16,7 @@ For that your function needs two parameters: `graph`, and `start`. Add them to y Your function should accept `graph` and `start` as the parameters, in this order. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == '(graph, start)' diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md index b1db899f516..3335dba5438 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md @@ -22,7 +22,7 @@ Your function should take three parameters:`graph`, `start`, and `target`. The o The `target` parameter should have the default value of an empty string. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == "(graph, start, target='')" diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md index 1d294cb0a14..8a1b607d6ef 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md @@ -14,7 +14,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list and all(type(i) is tuple for i in my_graph["B"]) `)) }) @@ -23,7 +23,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 3), ("C", 4)] len(my_graph["B"]) == 2 and all(t in my_graph["B"] for t in tuples) `)) diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md index c07db9bd228..b153442e99e 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md @@ -14,7 +14,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list and all(type(i) is tuple for i in my_graph["C"]) `)) }) @@ -23,7 +23,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 4), ("D", 7)] len(my_graph["C"]) == 2 and all(t in my_graph["C"] for t in tuples) `)) @@ -33,7 +33,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list and all(type(i) is tuple for i in my_graph["D"]) `)) }) @@ -42,7 +42,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 1), ("C", 7)] len(my_graph["D"]) == 2 and all(t in my_graph["D"] for t in tuples) `)) diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md index 0f26d512798..613ae67cd7e 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md @@ -25,7 +25,7 @@ Now, you are going to test your function with another graph. Change `my_graph` i You should modify `my_graph` into the provided graph. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` g = { 'A': [('B', 5), ('C', 3), ('E', 11)], 'B': [('A', 5), ('C', 1), ('F', 2)], diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md index 9efb6276c2d..60c41843693 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md @@ -27,7 +27,7 @@ You should have a variable called `copper`. Your `copper` variable should have the value of an empty dictionary. Use a pair of curly braces for that. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {} `)) }) diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md index be41549c881..587fdd97181 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md @@ -16,7 +16,7 @@ Add another key `age` to your dictionary and give it the integer number `2` as v You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 2 `)) }) @@ -25,7 +25,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have an `age` key with the value `2` just after `'species': 'guinea pig'`, inside your `copper` dictionary. Don't forget the comma. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md index e983945137c..67fc4be9b91 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md @@ -25,7 +25,7 @@ Depois do dicionário, siga o exemplo abaixo para acessar a chave `species` de ` Você não deve modificar seu dicionário. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md index cb19cd6d955..1d703bac619 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md @@ -24,7 +24,7 @@ You should rename your `copper` dictionary into `my_graph`. Your `my_graph` variable should be a dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph) is dict `)) }) diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md index fe315ea6213..c24b1e50ff5 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md @@ -16,7 +16,7 @@ Your `merge_sort` function should take a single parameter: `array`. ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('merge_sort'))) == '(array)' + str(inspect.signature(merge_sort)) == '(array)' `)) }) ``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md index c3e99d274f2..daa07f782ca 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md @@ -19,13 +19,9 @@ You should create an `if` statement to check if `len(array) <= 1`. Don't forget ```js ({ - test: () => { - const transformedCode = code.replace(/\r/g, ""); - const merge_sort = __helpers.python.getDef("\n" + transformedCode, "merge_sort"); - const { function_body } = merge_sort; - - assert.match(function_body, /if\s+len\(\s*array\s*\)\s*<=\s*1:\s*pass/); - } + test: () => assert(runPython(` + _Node(_code).find_function("merge_sort").find_ifs()[0].find_conditions()[0].is_equivalent("len(array) <= 1") + `)) }) ``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md index 41d4452e6d5..f6c3563c2c2 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md @@ -22,13 +22,11 @@ Use the `pass` keyword in the body of the `if` statement. Your `if` statement should check if `__name__` has a value of `'__main__'` ```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:/); -``` - -You should have the `pass` keyword in the body of your `if` statement - -```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:\s*[^}]*\bpass\b/); +({ + test: () => assert(runPython(` + _Node(_code).find_ifs()[0].find_conditions()[0].is_equivalent("__name__ == '__main__'") + `)) +}) ``` # --seed-- diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md index 916279050a0..e3b2b7553f3 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md @@ -25,7 +25,6 @@ Your `rods` variable should be an empty dictionary. ```js ({ test: () => assert(runPython(` - rods = __locals.get("rods") rods == {} `)) }) diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md index 573b73a68c5..ddb751e980b 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md @@ -19,8 +19,7 @@ You should use the `range()` function to assign a sequence of numbers to `rods[' ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - type(a['A']) is range + type(rods['A']) is range `)) }) ``` @@ -29,8 +28,7 @@ You should use the `range()` function to assign the sequence of numbers from `3` ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == range(3, 0, -1) + rods['A'] == range(3, 0, -1) `)) }) ``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md index 91b96c287bc..f9d911bd253 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md @@ -17,8 +17,7 @@ You should pass your `range()` call to the `list()` function. ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == list(range(3, 0, -1)) + rods['A'] == list(range(3, 0, -1)) `)) }) ``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md index 767ea7eaaf4..39675e93c7e 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md @@ -23,7 +23,7 @@ You should declare an empty function named `move`. Remember to use the `pass` ke ({ test: () => { assert(runPython(` import inspect - inspect.isfunction(__locals.get('move')) + inspect.isfunction(move) `)) } }) diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md index 6b5e0ac4c02..6b7a81b6d4f 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md @@ -23,9 +23,8 @@ The value of `number_of_moves` should be the expression to calculate the number ```js ({ test: () => { - assert(runPython(` - a = __locals.get('NUMBER_OF_DISKS') - __locals.get('number_of_moves') == 2**a -1 + assert(runPython(` + number_of_moves == 2**NUMBER_OF_DISKS -1 `)) } }) ``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md index a75d99585be..f691bb0476a 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md @@ -16,7 +16,7 @@ You should declare an empty function named `make_allowed_move`. Remember to use ```js ({ test: () => assert(runPython(` import inspect - inspect.isfunction(__locals.get('make_allowed_move')) + inspect.isfunction(make_allowed_move) `)) }) ``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md index 1569a9eceaa..2e9ee08b025 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md @@ -16,7 +16,7 @@ Your `make_allowed_move()` function should have two parameters named `rod1` and ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('make_allowed_move'))) == '(rod1, rod2)' + str(inspect.signature(make_allowed_move)) == '(rod1, rod2)' `)) }) ``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md index 5dd7a32d19d..44007735657 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md @@ -14,16 +14,14 @@ The `rods` dictionary will represent the three rods with their disks. Give it th Your `rods` dictionary should have an `'A'` key. ```js -({ test: () => assert(runPython(`'A' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'A' in rods`)) }) ``` `rods['A']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['A'] == [] + rods['A'] == [] `)) }) ``` @@ -31,16 +29,14 @@ Your `rods` dictionary should have an `'A'` key. Your `rods` dictionary should have a `'B'` key. ```js -({ test: () => assert(runPython(`'B' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'B' in rods`)) }) ``` `rods['B']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['B'] == [] + rods['B'] == [] `)) }) ``` @@ -48,16 +44,14 @@ Your `rods` dictionary should have a `'B'` key. Your `rods` dictionary should have a `'C'` key. ```js -({ test: () => assert(runPython(`'C' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'C' in rods`)) }) ``` `rods['C']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['C'] == [] + rods['C'] == [] `)) }) ``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md index 8e298c6e77d..d53deda394a 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md @@ -22,7 +22,7 @@ Your `move()` function should have `n`, `source`, `auxiliary`, and `target` as t ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('move'))) == '(n, source, auxiliary, target)' + str(inspect.signature(move)) == '(n, source, auxiliary, target)' `)) }) ``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md index 4781360d653..9226f0a4bc8 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md @@ -17,9 +17,8 @@ You should reduce the indentation level of all the code after the `return` state ```js ({ test: () => assert(runPython(` - hanoi = __locals.get("move") a, b, c = [3, 2, 1], [], [] - hanoi(3, a, b, c) + move(3, a, b, c) a == [] and b == [] and c == [3, 2, 1] `)) }) diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md index 16e7b5b68ed..00efcbb8726 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md @@ -23,9 +23,8 @@ You should add `direction` as the third parameter of your function. ```js ({ test: () => assert(runPython(` - import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + import inspect + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction)' `)) }) diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md index 74562ae26a5..d19dc6dbe27 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md @@ -24,8 +24,7 @@ You should declare a new function called `encrypt`. Remember to use the `pass` k ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - inspect.isfunction(f) + inspect.isfunction(encrypt) `)) }) ``` @@ -35,8 +34,7 @@ Your `encrypt` function should take `message` and `key` as the parameters. The o ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - sig = inspect.signature(f) + sig = inspect.signature(encrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md index fa091717efb..b7357c63760 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md @@ -16,8 +16,7 @@ You should define a new function called `decrypt`. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - inspect.isfunction(f) + inspect.isfunction(decrypt) `)) }) ``` @@ -27,8 +26,7 @@ Your `decrypt` function should take `message` and `key` as the parameters. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - sig = inspect.signature(f) + sig = inspect.signature(decrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md index 19fcb7ee6a3..f719d77790e 100644 --- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md @@ -23,8 +23,7 @@ The `direction` parameter of your `vigenere` function should have a default valu ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction=1)' `)) }) diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md new file mode 100644 index 00000000000..733f024fa29 --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md @@ -0,0 +1,39 @@ +--- +id: 65ef181dad3d96b14a21a03e +title: Step 1 +challengeType: 20 +dashedName: step-1 +--- + +# --description-- + +In this project, you will find the approximate square root of a given number using the bisection method. + +The bisection method is a technique for finding the roots of a real-valued function. It works by narrowing down an interval where the square root lies until it converges to a value within a specified tolerance. + +Begin by creating a function named `square_root_bisection`. Leave the parameters empty for now. + +# --hints-- + +You should define the function `square_root_bisection` with no parameters. + +```js +({ + test: () => { + assert(runPython(` + import inspect + inspect.isfunction(square_root_bisection) + `)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md new file mode 100644 index 00000000000..f5091e5a2c6 --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md @@ -0,0 +1,38 @@ +--- +id: 65ef190c6b51e9b5a5f7ed29 +title: Step 2 +challengeType: 20 +dashedName: step-2 +--- + +# --description-- + +Give the `square_root_bisection` method the following parameters: + +- `square_target`: The number for which you want to find the square root. +- `tolerance` (optional): The acceptable difference between the square of the approximate root value and the actual target value (default is `1e-7`). The tolerance `1e-7` implies that the solution will be accurate to within `0.0000001` of the true value and is a good default choice that balances accuracy and performance. +- `max_iterations` (optional): The maximum number of iterations to perform (default is `100`). If the method doesn't converge within this limit, you'll assume the solution is not found. + +# --hints-- + +Your function should have these parameters: `square_target`, `tolerance = 1e-7`, and `max_iterations = 100`. The order matters. + +```js +({ + test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").has_args("square_target, tolerance=1e-7, max_iterations=100")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py + +--fcc-editable-region-- +def square_root_bisection(): + pass +--fcc-editable-region-- + +``` + diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md new file mode 100644 index 00000000000..77628582774 --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md @@ -0,0 +1,46 @@ +--- +id: 65ef19425d1b27b6c930bae6 +title: Step 3 +challengeType: 20 +dashedName: step-3 +--- + +# --description-- + +If the number for which you want to find the square root is negative, the code should raise an error as the square root of a negative number is not defined in real numbers. + +Remove the `pass` statement and create an `if` statement to check if `square_target` is less than `0`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").has_pass()`)) + } +}) +``` + +You should create an `if` statement to check if `square_target < 0`. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_if("square_target < 0").is_empty()`)) + + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance = 1e-7, max_iterations = 100): + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md new file mode 100644 index 00000000000..20f407dfd2a --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md @@ -0,0 +1,46 @@ +--- +id: 65ef198fde24dfb7ff675b42 +title: Step 4 +challengeType: 20 +dashedName: step-4 +--- + +# --description-- + +If the `square_target` is less than `0`, raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'`. Don't forget to remove the `pass` keyword. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'` inside the `if` body. + +```js +({ + test: () => { + + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].is_equivalent("raise ValueError('Square root of negative number is not defined in real numbers')")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md new file mode 100644 index 00000000000..f31f83a0ed3 --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md @@ -0,0 +1,38 @@ +--- +id: 65ef19ec318e2fb9066381e3 +title: Step 5 +challengeType: 20 +dashedName: step-5 +--- + +# --description-- + +You'll create separate cases for when `square_target` is `0` or `1`. + +Begin by creating an `if` statement to check if `square_target` is equal to `1`. + +# --hints-- + +You should create an `if` statement to check that `square_target == 1`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[0].is_equivalent("square_target == 1")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md new file mode 100644 index 00000000000..927a215705a --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md @@ -0,0 +1,51 @@ +--- +id: 65ef1a1fcb527bba0ca82ccf +title: Step 6 +challengeType: 20 +dashedName: step-6 +--- + +# --description-- + +If the `square_target` is equal to `1`, declare a variable `root` and assign it the value `1` . Also, print the message `'The square root of {square_target} is 1'`. Remember to format the message using an f-string. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should assign the value `1` to the `root` variable and print the message `'The square root of {square_target} is 1'` inside the `if` body. + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].is_equivalent("root = 1\\nprint(f'The square root of {square_target} is 1')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md new file mode 100644 index 00000000000..9ba5f5b573f --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md @@ -0,0 +1,55 @@ +--- +id: 65ef1a50049cf9bada13266f +title: Step 7 +challengeType: 20 +dashedName: step-7 +--- + +# --description-- + +Create an `elif` statement to check if `square_target` is equal to `0`. If it is, assign the value `0` to the `root` variable. Also, print the message `'The square root of {square_target} is 0'`. Remember to format the message using an f-string. + +# --hints-- + +You should have an `elif` statement to check the condition `square_target == 0`. + + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[1].is_equivalent("square_target == 0")`)); + } +}) + +``` + +You should assign the value `0` to the `root` variable and pass the argument `f'The square root of {square_target} is 0'` to a `print` call. + + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[1].is_equivalent("root = 0\\nprint(f'The square root of {square_target} is 0')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md new file mode 100644 index 00000000000..0fb10817783 --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md @@ -0,0 +1,45 @@ +--- +id: 65ef1a720d6e65bbb0d22463 +title: Step 8 +challengeType: 20 +dashedName: step-8 +--- + +# --description-- +Next, you are going to work on the cases where the `square_target` is a positive number apart from `1` or `0`. + +Create an `else` clause to handle these cases. + +# --hints-- + +Create an `else` clause and do not forget to add a `pass` keyword. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[2] == _Node()`)) + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md new file mode 100644 index 00000000000..8f10c9990f1 --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md @@ -0,0 +1,73 @@ +--- +id: 65ef1aacca094bbcc2e2a3c8 +title: Step 9 +challengeType: 20 +dashedName: step-9 +--- + +# --description-- + +In Python, the `max()` function returns the largest of the input values. + +```python +max(1, 2, 3) # Output: 3 +``` + +The variables `low` and `high` will be used to define the initial interval where the square root lies. + +Inside the `else` clause, initialize the `low` variable to `0` and the `high` variable to be the maximum of either `1` or `square_target` as the square root of a number is always less than or equal to the number itself. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].has_pass()`)) + } +}) +``` + +You should declare a variable `low` and assign it `0`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("low").is_equivalent("low = 0")`)); } +}) + +``` + +You should declare a variable `high` and use the `max()` function to assign it the maximum value between `1` and `square_target`. + +```js + +({ test: () => assert(runPython(` +node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("high") +values = ["high = max(1, square_target)", "high = max(square_target, 1)"] +any(node.is_equivalent(val) for val in values) +`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md new file mode 100644 index 00000000000..6711973a758 --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md @@ -0,0 +1,46 @@ +--- +id: 65ef1afca9a8f6be0d4150ba +title: Step 10 +challengeType: 20 +dashedName: step-10 +--- + +# --description-- + +Set the value of `root` to `None` as at this point, you don't have an approximate value yet. + +# --hints-- + +The value of `root` should be `None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].is_equivalent("low = 0\\nhigh = max(1, square_target)\\nroot = None")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + low = 0 + high = max(1, square_target) + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md new file mode 100644 index 00000000000..69406d9fee2 --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md @@ -0,0 +1,51 @@ +--- +id: 65ef1be2b958cabf712296cd +title: Step 11 +challengeType: 20 +dashedName: step-11 +--- + +# --description-- + +Now you'll repeatedly narrow down the interval by finding the midpoint of the current interval and comparing the square of the midpoint with the target value. + +For that, inside the `else` block, create a `for` loop that runs up to `max_iterations` times. + +# --hints-- + +You should create a `for` loop to iterate over `range(max_iterations)`. Use `_` as the loop variable. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].is_equivalent("for _ in range(max_iterations):\\n pass")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md new file mode 100644 index 00000000000..e5efb88bafc --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md @@ -0,0 +1,78 @@ +--- +id: 65ef1c0a03fcabc04ded7e69 +title: Step 12 +challengeType: 20 +dashedName: step-12 +--- + +# --description-- + +Inside the for loop, calculate the midpoint of the interval ranging from `low` to `high`. Assign this value to a variable `mid`. + +Also, calculate the square of the midpoint (`mid`) and store it in the variable `square_mid`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].has_pass()`)) + + } + +}) + +``` + +You should declare a variable `mid` and assign it `(low + high) / 2` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(` + node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("mid") + values = ["mid = (low + high) / 2", "mid = (high + low) / 2"] + any(node.is_equivalent(val) for val in values) + `)) + + } + +}) +``` + +You should declare a variable `square_mid` and assign it `mid**2` inside the body of the for loop. + +```js +({ test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("square_mid").is_equivalent("square_mid = mid**2")`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md new file mode 100644 index 00000000000..f365f00475d --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md @@ -0,0 +1,53 @@ +--- +id: 65ef1c34a541afc12dbb849d +title: Step 13 +challengeType: 20 +dashedName: step-13 +--- + +# --description-- + +The `abs()` function returns the absolute value of a number, which is always positive, regardless of the number sign. You will use it to check that the estimated square root is close enough to the actual value. + +Now, create an `if` statement to check if the absolute value of the difference between `square_mid` and `square_target` is within the specified `tolerance`. + +# --hints-- + +You should have an `if` statement with the condition `abs(square_mid - square_target) < tolerance:` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[0].is_equivalent("abs(square_mid - square_target) < tolerance")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md new file mode 100644 index 00000000000..7c84ec9d7fe --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md @@ -0,0 +1,68 @@ +--- +id: 65ef1cb031de30c2cde64c12 +title: Step 14 +challengeType: 20 +dashedName: step-14 +--- + +# --description-- + +If the difference is within the specified `tolerance`, set the value of `root` to `mid` and break out of the loop. + +# --hints-- + +You should remove the existing `pass` statement. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].has_pass()`)) + } + +}) + +``` + +You should assign the value of `mid` to `root` and break out of the loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].is_equivalent("root = mid\\nbreak")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md new file mode 100644 index 00000000000..18a6767deab --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md @@ -0,0 +1,71 @@ +--- +id: 65ef1cda150a59c3b8306944 +title: Step 15 +challengeType: 20 +dashedName: step-15 +--- + +# --description-- + +If the difference is not within the specified `tolerance`, create an `elif` statement to check if `square_mid` is less than `square_target`. + +Assign the value of `mid` to `low` as the square root would now lie between `low` and `mid`. + +# --hints-- + +You should create an `elif` statement that checks if `square_mid < square_target`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[1].is_equivalent("square_mid < square_target")`)) + + } + +}) +``` + +You should assign the value of `mid` to `low`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[1].is_equivalent("low = mid")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md new file mode 100644 index 00000000000..06598491f2e --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md @@ -0,0 +1,70 @@ +--- +id: 65ef1d104c2be9c4d8e22075 +title: Step 16 +challengeType: 20 +dashedName: step-16 +--- + +# --description-- + +If both the `if` and `elif` conditions are not met, the value of `mid` would be greater than `square_target`. In this case, create an `else` clause and assign the value of `mid` to `high`. + +# --hints-- + +You should have an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[2]== _Node()`)); + } +}) + +``` + +You should assign the value of `mid` to `high` in the `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[2].is_equivalent("high = mid")`)); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- + elif square_mid < square_target: + low = mid + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md new file mode 100644 index 00000000000..45e3e9987a8 --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md @@ -0,0 +1,76 @@ +--- +id: 65ef1d5e3d2927c5e0f4997b +title: Step 17 +challengeType: 20 +dashedName: step-17 +--- + +# --description-- + +Outside the for loop, create an `if` statement to check if the value of `root` is still `None`. If it is, print the message `'Failed to converge within {max_iterations} iterations.'`. Remember to format the message using an f-string. + +# --hints-- + +You should create an `if` statement that checks if `root is None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[0].is_equivalent("root is None")`)); + + } +}) +``` + +You should pass the argument `f'Failed to converge within {max_iterations} iterations.'` to the `print` function. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].is_equivalent("if root is None:\\n print(f'Failed to converge within {max_iterations} iterations.')")`)); + + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md new file mode 100644 index 00000000000..ffe75554dd8 --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md @@ -0,0 +1,77 @@ +--- +id: 65ef1d924ff2e5c7031c6ce8 +title: Step 18 +challengeType: 20 +dashedName: step-18 +--- + +# --description-- + +Create an `else` clause to handle the case where the value of `root` is not `None`, indicating that a root hass been found. If it is not `None`, print the message `'The square root of {square_target} is approximately {root}'`. Remember to format using an f-string. + +# --hints-- + +You should create an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[1] == _Node()`)); + } +}) + +``` + +You should print `f'The square root of {square_target} is approximately {root}'` within the `else` body. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_bodies()[1].is_equivalent("print(f'The square root of {square_target} is approximately {root}')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md new file mode 100644 index 00000000000..1a2bb01cf56 --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md @@ -0,0 +1,68 @@ +--- +id: 65ef1dd722f6e7c8294eeec4 +title: Step 19 +challengeType: 20 +dashedName: step-19 +--- + +# --description-- + +Finally, return the value of `root` from the `square_root_bisection` function. + +# --hints-- + +You should return `root` at the end of the function. + +```js +({ + test: () => + { + const pyClassStr = runPython(`str(_Node(_code).find_function("square_root_bisection"))`); + assert.match(pyClassStr, /return\s*root/) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md new file mode 100644 index 00000000000..7904b9bceab --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md @@ -0,0 +1,70 @@ +--- +id: 65ef1e10268f8ec9121446d1 +title: Step 20 +challengeType: 20 +dashedName: step-20 +--- + +# --description-- + +Outside the function definiton, create a variable `N` and assign the value of `16` to it. + +# --hints-- + +You should have the variable `N = 16` outside the function definition. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_variable("N").is_equivalent("N = 16")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md new file mode 100644 index 00000000000..71da1b62c03 --- /dev/null +++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md @@ -0,0 +1,115 @@ +--- +id: 65ef1eac497754cafa12a26c +title: Step 21 +challengeType: 20 +dashedName: step-21 +--- + +# --description-- + +Call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +Experiment with larger values. + +With this, you have successfully implemented the bisection method to find the square root of a number. + +# --hints-- + +You should call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +```js +({ + test: () => assert(runPython(`_Node(_code).has_call("square_root_bisection(N)")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- +N = 16 + +--fcc-editable-region-- + +``` + +# --solutions-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +N = 16 +square_root_bisection(N) +``` diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md index c027a2c9c46..1854bc599cc 100644 --- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md +++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md @@ -7,7 +7,7 @@ dashedName: step-8 # --description-- -Para ver o elemento `cat-head`, dê a ele um plano de fundo com gradiente linear com os valores `#5e5e5e` em `85%` e `#45454f` em `100%`. +To see the `.cat-head` element, give it a linear gradient background with `#5e5e5e` at `85%` and `#45454f` at `100%`. Você pode não notar a diferença entre estas duas cores, mas elas estão lá. diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md index 4a2959eb83d..f1106ae27bc 100644 --- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md +++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md @@ -11,7 +11,7 @@ Dentro do elemento `.cat-ears`, crie dois elementos `div` com a classe `cat-left # --hints-- -Você não deve alterar o elemento `div` existente com a classe `cat-ears`. +You should not change the existing `div` element with the class `cat-ears`. ```js assert(document.querySelectorAll('div.cat-ears').length === 1); diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md index 510542ea8fa..893f51e034a 100644 --- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md +++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md @@ -11,7 +11,7 @@ O valor da última propriedade `position` é `sticky`. O posicionamento `sticky` Altere o valor da propriedade `position` de `.cat-head` para `sticky`, defina `top` como `0` e remova `left` e seu valor. -**Observação**: para ver como `sticky` funciona, você tem de colocar alguns textos antes e depois do elemento `div` de `.cat-head`. Se você rolar para cima depois disso, verá que `.cat-head` fica preso na parte superior e permanece lá. +**Observação**: para ver como `sticky` funciona, você tem de colocar alguns textos antes e depois do elemento `div` de `.cat-head`. If you scroll down after that, you'll see that the `.cat-head` gets stuck to the top and remains there. # --hints-- diff --git a/curriculum/challenges/portuguese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md b/curriculum/challenges/portuguese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md index 0f93285cb97..5f212983dbc 100644 --- a/curriculum/challenges/portuguese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md +++ b/curriculum/challenges/portuguese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md @@ -61,7 +61,7 @@ while (continueLoop) { --fcc-editable-region-- --fcc-editable-region-- -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/portuguese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md b/curriculum/challenges/portuguese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md index bf40abef119..3f935935d65 100644 --- a/curriculum/challenges/portuguese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md +++ b/curriculum/challenges/portuguese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md @@ -44,7 +44,7 @@ let done = 0; while (continueLoop) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/portuguese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md b/curriculum/challenges/portuguese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md index 9c976287a58..38f1716a030 100644 --- a/curriculum/challenges/portuguese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md +++ b/curriculum/challenges/portuguese/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md @@ -48,7 +48,7 @@ let done = 0; while (done !== count) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/portuguese/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md b/curriculum/challenges/portuguese/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md index fdc880cb435..92348aa39a0 100644 --- a/curriculum/challenges/portuguese/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md +++ b/curriculum/challenges/portuguese/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md @@ -23,15 +23,7 @@ Teste o valor de `__name__` ```js ({ - test: () => assert(__pyodide.runPython(`__name__ == '__main__'`)) -}) -``` - -Teste __locals e __pyodide - -```js -({ - test: () => assert(__pyodide.runPython(`__locals.get('add')(4,5) == 9`)) + test: () => assert(runPython(`__name__ == '__main__'`)) }) ``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md index d2139487de3..de4fa3e7ee3 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md @@ -1,6 +1,5 @@ --- id: 658111239f39a01c8f095c44 -videoId: nLDychdBwUg title: "Dialogue 1: What Motivates the Team?" challengeType: 21 dashedName: dialogue-1-what-motivates-the-team @@ -13,3 +12,275 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Maria", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.5, + "dialogue": { + "text": "Hey Maria, I have a question… Do you know what motivates the team?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 4.9, + "finishTime": 7.4, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 8.7, + "finishTime": 12.3, + "dialogue": { + "text": "Hi Brian! Well, one thing that really motivates me is learning new things.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 12.7, + "finishTime": 16, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 16.5, + "finishTime": 18.2, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 19.7, + "finishTime": 20.9, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 21.3, + "finishTime": 24.7, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 25, + "finishTime": 27.2, + "dialogue": { + "text": "But you know what demotivates me sometimes?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 27.7, + "finishTime": 32.6, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 33.1, + "finishTime": 37.3, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 37.7, + "finishTime": 39.7, + "dialogue": { + "text": "Well, collaborating with our creative team", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 39.7, + "finishTime": 42.5, + "dialogue": { + "text": "and brainstorming many ideas really inspires me.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 42.8, + "finishTime": 44.6, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 45.5, + "finishTime": 49, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 49.3, + "finishTime": 53.6, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 54, + "finishTime": 55.5, + "dialogue": { + "text": "It is really frustrating.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 56.5, + "finishTime": 58.4, + "dialogue": { + "text": "Yeah, technical glitches are complicated", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 58.4, + "finishTime": 61, + "dialogue": { + "text": "and there's not much we can do other than try to solve them.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 62, + "finishTime": 63.3, + "dialogue": { + "text": "But do you know what else is great?", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 63.7, + "finishTime": 66.7, + "dialogue": { + "text": "Seeing the team's enthusiasm after solving these issues.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 67.1, + "finishTime": 69.8, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 71.3, + "finishTime": 75.4, + "dialogue": { + "text": "Yeah. Wow. You know what? This was really a motivating talk.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 75.7, + "finishTime": 77.1, + "dialogue": { + "text": "Thanks for sharing your thoughts.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 77.7, + "finishTime": 79.8, + "dialogue": { + "text": "Anytime. It's good to have these discussions.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 80, + "finishTime": 81.6, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "right" + } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 82.1 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 82.6 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md index 5eb9cbab87f..bd40d89ce39 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-6 --- - + # --description-- @@ -18,7 +15,7 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ## --sentence-- -`Well, one thing that really motivates me is _ new things.` +`Hi, Brian. Well, one thing that really motivates me is _ new things.` ## --blanks-- @@ -27,3 +24,47 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ### --feedback-- This word is a gerund, the `-ing` form of the verb used as a noun, indicating the action or process of gaining knowledge. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md index 57d5a2b1a4d..279e2861a88 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-5 --- - + # --description-- @@ -20,7 +17,7 @@ When you add an `s` at the end of a word, like `things`, it means you are talkin ## --sentence-- -`Hi Brian! _, one _ that really motivates me _ learning new _.` +`Hi, Brian! _, one _ that really motivates me _ learning new _.` ## --blanks-- @@ -53,3 +50,47 @@ This is the verb `to be` conjugated in the third person singular. ### --feedback-- Maria uses this word to talk about more than one item or idea she likes to learn. It is the plural form of `thing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md index eee61930dcc..3ecb0ccb702 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-7 --- - + # --description-- @@ -51,3 +48,47 @@ learning new things ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md index 053ae896f0b..80d98bbbc33 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-8 --- - + # --description-- @@ -37,3 +34,47 @@ This word is a gerund describing the activity Maria enjoys related to discoverin ### --feedback-- Another gerund that follows `and`, indicating another activity Maria enjoys, which is about getting better at something. It also ends in `-ing` and serves as a noun. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 15.04 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.28, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.78 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md index fbe4dcc505d..cfa8469782b 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-10 --- - + # --description-- @@ -26,7 +23,7 @@ In `I love exploring many new technologies`, how is `exploring` used? ## --answers-- -As a present continuous +As a verb in the present continuous structure ### --feedback-- @@ -34,7 +31,7 @@ Present continuous are for actions happening now. This is not showing an action --- -As a simple present verb +As a verb in the simple present structure ### --feedback-- @@ -42,11 +39,11 @@ Simple present verbs don't end in `-ing`. --- -As a gerund +As a verb in the gerund form --- -As a past participle +As a verb in the past participle form ### --feedback-- @@ -55,3 +52,47 @@ Past participles are for perfect tenses or as adjectives. This is not used like ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 6.50, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills. It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 7.00 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md index 80690caccd2..252cf48c05b 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-18 --- - + # --description-- @@ -31,3 +28,47 @@ Adding a prefix to a word can change its meaning. ### --feedback-- Maria uses an adjective ending in `-ing` to describe a feeling that is the opposite of `motivating`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 32.22, + "finishTimestamp": 36.08 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.86, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.36 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md index 9001228085f..2ea50eff48d 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-11 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to the audio and complete the sentence. ### --feedback-- This word is used when someone listens to what another person says. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 19.86 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 2.68 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md index f00bebea879..042955730aa 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-12 --- - + # --description-- @@ -49,3 +46,47 @@ This word means to develop or become bigger or more advanced. It ends with `-ing ### --feedback-- This word is related to work or a career. It describes doing something in a way that shows good skills and behavior at a job. it ends with `-ly` + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 20.28, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md index 885332a3dfc..008035b84e7 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-13 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on how skill improvement fits into overall personal and professional dev ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.98, + "dialogue": { + "text": "That's great to hear, Maria. Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.48 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md index a99fd602832..e087041f3d9 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-14 --- - + # --description-- @@ -53,3 +50,65 @@ He's adding to the conversation, not changing the topic. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 26.26 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 2.60, + "finishTime": 5.64, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot,", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 6.02, + "finishTime": 8.58, + "dialogue": { + "text": "but you know what demotivates me sometimes?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 9.08 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md index 0bcef38811f..ed340f1a31c 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md @@ -28,4 +28,48 @@ Listen to the audio and complete the sentence. ### --feedback-- -This word means feeling very happy and eager. +This word means feeling very happy and eager. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 15.32, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.94, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.44 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md index b425e084763..cf6dcc31710 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-16 --- - + # --description-- @@ -55,3 +52,47 @@ This phrase means having plenty of time, which is different from what Brian mean ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md index b5708ac00fe..8de15f47d1c 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-17 --- - + # --description-- @@ -47,3 +44,47 @@ This word is a preposition used to compare or illustrate a similarity to somethi ### --feedback-- It means you are doing something quickly because you do not have much time. It ends with `-ing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md index 5293029060e..f74bac67a8c 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-20 --- + + # --description-- The word `brainstorming` refers to a group discussion to produce ideas and solve problems. @@ -46,3 +48,47 @@ It means adhering to specific instructions, which is not the same as the word. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md index ea82aef1538..1b4aea4a2b1 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-28 --- - + # --description-- @@ -18,7 +15,7 @@ The phrase `slow down` means to decrease in speed or reduce the rate of progress ## --sentence-- -`The problem is encountering many technical issues that make our progress _ _.` +`The problem is encountering many technical issues that _ our progress _.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to describe a decrease in speed or pace. ### --feedback-- This adverb complements the phrase to indicate a reduction or decrease in intensity, speed, or amount. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md index ed1c423927b..bd8c7fa6444 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-32 --- + + # --description-- The phrase `other than` indicates the presence of an alternative or different option. @@ -46,3 +48,47 @@ It means the singular or exclusive option, which is not the same as the phrase. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md index d2a4201ca63..9712d6a3279 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-35 --- - + # --description-- @@ -43,3 +40,47 @@ This possessive adjective is used to refer to something that belongs to the pers ### --feedback-- This noun refers to the reason or reasons one has for acting or behaving in a particular way. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 66.12, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 3.68, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.18 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md index 8f432d36f95..c5b54c0b913 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-38 --- - + # --description-- @@ -29,3 +26,47 @@ In the dialogue, Maria talks about the importance of discussions to help them re ### --feedback-- This verb is used to make someone think of something they might have forgotten. It brings something back into someone's mind. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 76.52, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.08, + "dialogue": { + "text": "Anytime. It's good to have these discussions. It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.58 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md index ba9e43efcb6..974459e9326 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-39 --- - + # --description-- @@ -43,3 +40,47 @@ This pronoun refers to the speaker and at least one other person, indicating a c ### --feedback-- This word is used in the context of continuing forward or persevering in a particular action or state. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 79.06, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.54, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.04 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md index 2f8c34f4dbf..c1b55b444af 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md @@ -1,6 +1,5 @@ --- id: 658160772584ba319849f910 -videoId: nLDychdBwUg title: "Dialogue 2: Asking How Someone Feels" challengeType: 21 dashedName: dialogue-2-asking-how-someone-feels @@ -13,3 +12,239 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Alice", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Tom", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Alice", + "startTime": 2, + "finishTime": 5.6, + "dialogue": { + "text": "Hi Tom, you look a bit down these days. Is everything okay?", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 6.3, + "finishTime": 9.5, + "dialogue": { + "text": "Hey Alice, yeah, I feel a bit demotivated.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 9.8, + "finishTime": 13.6, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 13.8, + "finishTime": 16.7, + "dialogue": { + "text": "It's exhausting, and it feels like I'm constantly running", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 16.7, + "finishTime": 18.1, + "dialogue": { + "text": "without knowing where I'm going.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 18.9, + "finishTime": 22.7, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 23.4, + "finishTime": 25.7, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 26.2, + "finishTime": 28.8, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 28.8, + "finishTime": 30.6, + "dialogue": { + "text": "instead of working together as a team.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 31.3, + "finishTime": 34.7, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 35, + "finishTime": 38.4, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 38.9, + "finishTime": 41.7, + "dialogue": { + "text": "Sometimes, it feels like we're meeting for no reason,", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 41.7, + "finishTime": 44.3, + "dialogue": { + "text": "and it's hard to find time to actually work on projects.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 45, + "finishTime": 48.4, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 49, + "finishTime": 52.6, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 52.6, + "finishTime": 56.6, + "dialogue": { + "text": "without any variation. It feels like I'm wasting my skills and creativity.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 57.06, + "finishTime": 59, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 59.6, + "finishTime": 62.8, + "dialogue": { + "text": "Repeating the same tasks over and over can be demotivating.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 63.2, + "finishTime": 66.4, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 66.8, + "finishTime": 69.4, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation,", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 69.4, + "finishTime": 71.3, + "dialogue": { + "text": "and it's good to share and support each other.", + "align": "left" + } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 71.8 + }, + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 72.3 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md index b8674840c93..9a3003405af 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-40 --- - + # --description-- @@ -22,7 +19,7 @@ In this conversation, Alice notices something about Tom's mood and asks if he's ## --sentence-- -`Hi Tom, you look a bit _ _ days. Is everything okay?` +`Hi, Tom. You look a bit _ _ days. Is everything okay?` ## --blanks-- @@ -39,3 +36,47 @@ This word is used to describe feeling sad or unhappy. It's like when you're not ### --feedback-- This word is used with `days` to talk about the current time or the recent period. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 0.98, + "finishTimestamp": 4.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.60, + "dialogue": { + "text": "Hi, Tom. You look a bit down these days. Is everything okay?", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.10 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md index 8fe09a43d89..fdd78d7f84d 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-41 --- - + # --description-- @@ -20,7 +17,7 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ## --sentence-- -`Hey Alice, yeah, I feel a bit _.` +`Hey, Alice. Yeah, I feel a bit _.` ## --blanks-- @@ -29,3 +26,47 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ### --feedback-- This word is used to describe how Tom feels. It ends with `ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 8.48 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md index a8f6062add9..e30ea2d793a 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-42 --- - + # --description-- @@ -46,8 +43,52 @@ This word means `lacking` or `not having` something. --- -`break` +`breaks` ### --feedback-- -This word refers to a short period of rest or pause from work or activity. +This word refers to a short period of rest or pause from work or activity. Use the plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 8.84, + "finishTimestamp": 12.60 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.76, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.26 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md index 90185d888a6..b19719a1211 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-43 --- - + # --description-- @@ -45,3 +42,47 @@ This word means something is happening all the time or very often. ### --feedback-- This word is used to indicate the absence of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 12.82, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 5.30, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.80 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md index b6f27b9c9b9..524c4be5635 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-44 --- - + # --description-- @@ -18,7 +15,7 @@ Tom talks about what's making him feel demotivated. Let's figure out what is bot ## --text-- -What is making Tom feel demotivated and why? +What is making Tom feel demotivated? ## --answers-- @@ -51,3 +48,65 @@ Reflect on Tom's words about his work routine and how it makes him feel. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.54, + "finishTime": 8.3, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 8.52, + "finishTime": 12.82, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 13.32 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md index 23f853581be..b084d8c5f2d 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-45 --- - + # --description-- @@ -51,3 +48,47 @@ She understands how Tom feels ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 18.98 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 2.28, + "dialogue": { + "text": "I totally get that, Tom.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 2.78 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md index 95b626db8ab..18b3ede5a71 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-46 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working more hours than what is normally required, often beyond ### --feedback-- This word describes something that makes you feel very tired, like it's taking all your energy away. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 21.72 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.02, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.52 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md index 8e581dc301d..143b260cab0 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-47 --- - + # --description-- @@ -35,3 +32,47 @@ This word means managing or handling, especially when the situation is challengi ### --feedback-- This word, in the context of the office, refers to the social and power dynamics among coworkers and within the workplace environment. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 24.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.52, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.02 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md index ffd2e2364d2..5c132f9bd9c 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-48 --- - + # --description-- @@ -45,3 +42,47 @@ This word means making an effort to do something, often something challenging. ### --feedback-- This word is about doing tasks, especially with others to achieve a common goal or finish a project. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 25.02, + "finishTimestamp": 29.38 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.36, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.86 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md index eed7315d9fd..1c59d0c36f8 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-49 --- - + # --description-- @@ -51,3 +48,65 @@ Reflect on the specific aspect of work that Alice mentions she hates dealing wit ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 29.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.9, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 5.64, + "finishTime": 7.96, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 8.4, + "finishTime": 12.88, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 13.38 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md index 008029728ad..89639635494 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-50 --- - + # --description-- @@ -22,11 +19,11 @@ Tom is agreeing with Alice about a specific aspect of work that they find unplea ## --blanks-- -`dealing` +`Dealing` ### --feedback-- -This word means managing or handling something, often implying that it's not an easy or enjoyable task. +This word means managing or handling something, often implying that it's not an easy or enjoyable task. Don't forget the capitalization. --- @@ -35,3 +32,47 @@ This word means managing or handling something, often implying that it's not an ### --feedback-- In the context of an office, this word refers to the social and power dynamics among coworkers. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 30.08, + "finishTimestamp": 33.46 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md index 33c828a005d..eb1ae62b875 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-51 --- - + # --description-- @@ -45,3 +42,47 @@ This word is part of a expression that means something is making Tom upset or an ### --feedback-- This word is used when you're talking about experiencing something, like when you have a lot of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md index f182b582c7f..9e516b17b69 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-52 --- - + # --description-- @@ -51,3 +48,47 @@ He wishes for even more meetings ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md index 43b8ae258c9..f457d5cb4c2 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-53 --- - + # --description-- -Listen to the audio and answer the question. +Listen to the audio and fill in the blanks. # --fillInTheBlank-- @@ -51,3 +48,47 @@ This word means to discover or locate something. It's often used when you're loo ### --feedback-- This word is used to emphasize what is really true or happening. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md index e12e17d47ff..a0c2ef0d79a 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-54 --- - + # --description-- @@ -51,3 +48,47 @@ They take away time from working on projects ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md index 2bd6b036fb7..97dde90f3cb 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-55 --- - + # --description-- @@ -24,7 +21,7 @@ Alice: I hear you, Tom. Sitting in meetings for hours can be discouraging. ## --sentence-- -`_ in meetings for hours can be _.` +`I hear you, Tom. _ in meetings for hours can be _.` ## --blanks-- @@ -41,3 +38,47 @@ This word describes the action of being seated. It is capitalized. ### --feedback-- This word means something that makes you feel less confident or willing to continue. It ends in `ing`, showing it's describing the effect of the action. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md index da3c221a1f1..30aeb3ff460 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md @@ -5,12 +5,7 @@ challengeType: 19 dashedName: task-56 --- - + # --description-- @@ -53,3 +48,47 @@ Consider what Alice means by `discouraging` in the context of meetings. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md index c60324ba8d3..2957a5033ab 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-57 --- - + # --description-- @@ -43,3 +40,47 @@ This word is used to describe a large number of things grouped together. It's li ### --feedback-- This word refers to having different types or changes in something. It's the opposite of doing the same thing over and over. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 52.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 6.02, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.52 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md index 63d0a5a5643..cf49c33b69a 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-58 --- - + # --description-- @@ -35,3 +32,47 @@ This word means not using something valuable in a good or effective way. It's li ### --feedback-- This word refers to the ability to make new things or think of new ideas. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 53.24, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.34, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 3.84 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md index 540a3a77c0f..e189fc50af5 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-59 --- - + # --description-- @@ -51,3 +48,56 @@ Consider what Alice says directly annoys her versus how she feels about another ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md index ef09e4af19b..a5f87b483bd 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-60 --- - + # --description-- @@ -51,3 +48,56 @@ Think about whether meetings are mentioned in the context of wasting skills and ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md index fa7b1328561..7f182561d7f 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-61 --- - + # --description-- @@ -39,3 +36,47 @@ This auxiliary verb is used here to emphasize the verb that follows it, making t ### --feedback-- This adjective describes feelings of annoyance or irritation, often because of obstacles or difficulties. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 58.00 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.14, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 3.64 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md index e2e6ee3f118..d0f7a57efaa 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-62 --- - + # --description-- @@ -55,3 +52,47 @@ This word, when used twice with `and` in between, emphasizes the repetition of a ### --feedback-- This word describes something that reduces your desire or willingness to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 61.78 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "That does sound frustrating, Alice. Repeating the same tasks over and over can be demotivating.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md index 27d721f5a0a..bef09034af7 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-63 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to describe an emotional experience or sensation, in this case ### --feedback-- This word is the plural of `this`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md index 1721b02d9e4..c2eefbb7b7d 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-65 --- - + # --description-- @@ -51,3 +48,47 @@ For listening to him ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md index 80ad6cb9859..dc1a51e3b48 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-66 --- - + # --description-- @@ -51,3 +48,47 @@ This word means to tell others about your own experiences, thoughts, or feelings ### --feedback-- This word involves giving help or encouragement, showing you are there for someone. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md index 88359a9631c..ae0f2da0a0d 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-67 --- - + # --description-- @@ -51,3 +48,47 @@ The value of sharing feelings and supporting one another ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md index 01535bb27f7..e34ef923278 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-64 --- - + # --description-- @@ -44,3 +41,46 @@ This word is the middle part of the phrase used to casually introduce new inform This word completes the phrase, indicating a casual addition or shift in the conversation. +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md index abd512abbb8..fb7e5ccda2d 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md @@ -1,6 +1,5 @@ --- id: 65a351bd69b0b72d7ed24eb5 -videoId: nLDychdBwUg title: "Dialogue 3: Talking About Motivations to Pursue a Career" challengeType: 21 dashedName: dialogue-3-talking-about-motivations-to-pursue-a-career @@ -13,3 +12,212 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Lisa", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5, + "dialogue": { + "text": "Hey Lisa, what motivated you to choose a career in tech?", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 6, + "finishTime": 8.5, + "dialogue": { + "text": "One of my main motivations was the financial stability", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 8.8, + "finishTime": 10, + "dialogue": { + "text": "that tech jobs can provide.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 10.4, + "finishTime": 12.8, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 13.3, + "finishTime": 16.3, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 17.4, + "finishTime": 19.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 19.8, + "finishTime": 24, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 24, + "finishTime": 26, + "dialogue": { + "text": "and have different perspectives.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 26.8, + "finishTime": 29.2, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 29.2, + "finishTime": 32.1, + "dialogue": { + "text": "Another thing was the chance to be part of projects", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 32.1, + "finishTime": 34.2, + "dialogue": { + "text": "that push the limits of innovation and creativity.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 34.9, + "finishTime": 36, + "dialogue": { + "text": "I'm with you on that one.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 36.1, + "finishTime": 39.6, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 39.7, + "finishTime": 43.1, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 44.3, + "finishTime": 47.3, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 47.3, + "finishTime": 49.6, + "dialogue": { + "text": "and finding practical solutions is really thrilling.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 50.3, + "finishTime": 53, + "dialogue": { + "text": "Knowing that we solved problems is really exciting, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 53.4, + "finishTime": 56.7, + "dialogue": { + "text": "I hope we keep getting as much motivation from it as we can.", + "align": "left" + } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.2 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.7 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md index e165f760c08..23c160c642f 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-68 --- - + # --description-- @@ -18,7 +15,7 @@ Brian: Hey Lisa, what motivated you to choose a career in tech? ## --sentence-- -`Hey Lisa, what _ you to _ a career in tech?` +`Hey, Lisa, what _ you to _ a career in tech?` ## --blanks-- @@ -34,4 +31,48 @@ This word means something gave you a reason or desire to do something. It ends w ### --feedback-- -This verb is about making a decision between different options. +This verb is about making a decision between different options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md index 94e4ccd2b3e..3a96b95c93a 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-69 --- - + # --description-- @@ -51,3 +48,47 @@ What motivated her to pick a tech career ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md index 47d7700e414..9dc5f7bc32d 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-70 --- - + # --description-- @@ -37,3 +34,47 @@ The most important. ### --feedback-- Being steady, meaning you don't have to worry too much about it. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md index afed572b3be..22a27d6cb43 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-71 --- - + # --description-- @@ -35,3 +32,47 @@ This word is a past tense verb used to describe a state or condition in the past ### --feedback-- This verb means to give or supply something needed, like help, information, or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md index a5031402575..f006bbf44d1 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-72 --- - + # --description-- @@ -52,3 +48,71 @@ Reflect on Lisa's statement and whether travel is mentioned as a motivation. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.50 + }, + { + "character": "Lisa", + "opacity": 1, + "startTime": 5.50 + }, + { + "character": "Lisa", + "startTime": 5.82, + "finishTime": 10.02, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md index e71f55301a3..4b20a9bd448 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-73 --- - + # --description-- @@ -37,3 +34,47 @@ This verb means giving permission or making it possible to do something. this ve ### --feedback-- This noun describes the feeling of being certain about your abilities or something you're going to do. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 9.48, + "finishTimestamp": 11.90 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.42, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 3.92 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md index 4f8c68dfebb..ca8b0a42958 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-74 --- - + # --description-- @@ -39,3 +36,47 @@ This word refers to different areas of work or study. It's plural here because s ### --feedback-- This verb is used to talk about successfully reaching a goal, especially after putting in effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 12.16, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md index d0951b06bde..84aca093d52 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-75 --- - + # --description-- @@ -51,3 +48,65 @@ Lisa doesn't mention working less. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md index 1e5b8911585..9bd217faa04 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-76 --- - + # --description-- The words `much` and `many` are used to talk about quantity. @@ -52,3 +49,65 @@ Reflect on Lisa's statement about what makes tech jobs stand out for her. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md index 38a5ed3758e..013e56a7705 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-77 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to Brian's response to Lisa and fill in the missing word that shows he st ### --feedback-- This adverb is used to emphasize the truth or importance of a statement, showing strong agreement or belief. it ends with `ly`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 18.38 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.40, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.90 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md index 620135fd503..145afc143d8 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-78 --- - + # --description-- @@ -51,3 +48,47 @@ This word is used to describe different areas of study or work. This word is in ### --feedback-- These are different ways of viewing or thinking about something. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 18.80, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.20, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.70 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md index 5f88ce8ca38..56d23563f4a 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-79 --- - + # --description-- @@ -51,3 +48,56 @@ Consider Brian's interest in working across many fields versus concentrating on ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 3.82, + "finishTime": 10.02, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md index 9867dd455d5..36fa55aa8ae 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-80 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working together with others. Notice it ends with `-ing`, indica ### --feedback-- This adjective describes something that is thrilling or full of energy. It ends with `-ing`, showing a quality or state. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.62, + "finishTimestamp": 28.18 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md index 31ed219cb44..d126871e672 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-81 --- - + # --description-- @@ -45,3 +42,47 @@ TTo extend or go beyond usual limits or boundaries. It's often used to talk abou ### --feedback-- This noun refers to new ideas, products, or methods that improve something or solve problems. It's about coming up with new ways to do things. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 28.38, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md index 976777de56e..19ed243bc7e 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-82 --- - + # --description-- @@ -51,3 +48,56 @@ Consider whether Lisa's motivation is related to work environment or the nature ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.94 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md index cc4a931a4a1..9d83cc465d3 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-83 --- - + # --description-- @@ -52,3 +48,80 @@ He agrees with Lisa ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 34.98 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.45 + }, + { + "character": "Brian", + "opacity": 1, + "startTime": 8.45 + }, + { + "character": "Brian", + "startTime": 8.57, + "finishTime": 10.16, + "dialogue": { + "text": "I'm with you on that one.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.66 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md index 3c748ab456e..c9ec667c225 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-84 --- - + # --description-- @@ -37,3 +34,47 @@ This noun describes the ability to change or adapt easily according to different ### --feedback-- This word refers to the specific functions or positions that individuals can have within a group or organization. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 38.36 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.76 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md index f111304b929..566d8c5e7db 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-85 --- - + # --description-- @@ -20,7 +17,7 @@ Listen carefully and fill in the missing words about what tech roles make possib ## --sentence-- -`They _ us to balance our jobs with personal _ and hobbies.` +`I'm also interested in the flexibility that tech roles offer. They _ us to balance our jobs with personal _ and hobbies.` ## --blanks-- @@ -37,3 +34,56 @@ This verb means to make something possible or to give permission for something. ### --feedback-- This noun refers to things you enjoy doing, like hobbies or activities that catch your attention. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md index 0efe7ddf734..f5aab15821c 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-86 --- - + # --description-- @@ -55,3 +52,56 @@ Is Brian talking about traveling, or is he interested in something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md index 1828c2b24fd..f285c7e7f50 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-87 --- - + # --description-- @@ -45,3 +42,47 @@ This word means discovering or coming up with something, like an answer or solut ### --feedback-- This adjective means very exciting. It often describes something that makes your heart beat faster because it's so exciting or fun. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md index a2b77cc1c45..689b3e667de 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-88 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on the word `satisfaction` and if it suggests feeling tired. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md index 122529e8f39..fd8178da8fc 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-89 --- - + # --description-- @@ -43,3 +40,47 @@ This adjective describes something that is thrilling or causes great enthusiasm. ### --feedback-- This word means receiving or obtaining something. Here, it's also in the `-ing` form, indicating an ongoing action or process. Remember to use double `t`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md index f8bb1a273ee..a72f4990d84 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-90 --- - + # --description-- @@ -53,3 +50,47 @@ Brian talks about being excited by solving problems, not about where to find mot ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md index 93a91f9790d..f0a8796d57b 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md @@ -13,3 +13,221 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Bob", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sarah", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.6, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech?", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 5, + "finishTime": 7, + "dialogue": { + "text": "It's all those amazing gadgets!", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 7.8, + "finishTime": 9.6, + "dialogue": { + "text": "I can see your enthusiasm, Bob!", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 9.9, + "finishTime": 12.3, + "dialogue": { + "text": "Tell me, which tech gadgets are your absolute favorites?", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 13, + "finishTime": 16.2, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 16.3, + "finishTime": 18.9, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health,", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 19.2, + "finishTime": 22.7, + "dialogue": { + "text": "and even helps me stay organized with reminders and notifications.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 23.7, + "finishTime": 26, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 26, + "finishTime": 28.1, + "dialogue": { + "text": "The camera quality, the speed,", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 28.3, + "finishTime": 30.8, + "dialogue": { + "text": "and the number of apps available are what I like the most.", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 31.2, + "finishTime": 33.9, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 34.3, + "finishTime": 37.2, + "dialogue": { + "text": "Gadgets like these are transforming our daily lives.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 37.6, + "finishTime": 40.8, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 41.3, + "finishTime": 44, + "dialogue": { + "text": "I love capturing stunning aerial shots", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 44, + "finishTime": 46.5, + "dialogue": { + "text": "and exploring new angles for photography.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 47.7, + "finishTime": 50.3, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 50.7, + "finishTime": 52.7, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 52.7, + "finishTime": 54.5, + "dialogue": { + "text": "It's amazing how these innovations", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 54.5, + "finishTime": 56.8, + "dialogue": { + "text": "keep making our lives more interesting and connected.", + "align": "right" + } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.3 + }, + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.8 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md index 2f5b51c5efe..1c735765ddb 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-91 --- - + # --description-- @@ -47,3 +44,47 @@ This word is used to point out specific things that are being talked about, in t ### --feedback-- This word refers to small electronic devices or tools that are useful or interesting. It's often used to talk about cool tech items. It is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md index 06bb47f4e2f..7ddc748e75b 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-92 --- - + # --description-- @@ -51,3 +48,47 @@ The latest technology gadgets ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md index 746bfa4615b..96ed9a633c9 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-93 --- - + # --description-- @@ -27,3 +24,47 @@ Sarah: I can see your enthusiasm, Bob! ### --feedback-- This noun describes the feeling of being very excited or interested in something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 8.60 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 2.74, + "dialogue": { + "text": "I can see your enthusiasm, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.24 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md index a7eb6fcbfcb..4f55a749a61 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-94 --- - + # --description-- @@ -22,7 +19,7 @@ Sarah: I can see your enthusiasm, Bob! Tell me, which tech gadgets are your abso ## --sentence-- -`Tell me, _ tech gadgets are your _ favorites?` +`I can see your enthusiasm, Bob! Tell me, _ gadgets are your _ favorites?` ## --blanks-- @@ -39,3 +36,47 @@ This word asks for a specific choice or selection from a known group of items. ### --feedback-- This adjective emphasizes that the choice is the most complete or total among all options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 11.36 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.50, + "dialogue": { + "text": "I can see your enthusiasm, Bob. Tell me, which gadgets are your absolute favorites?", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.00 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md index 09bd788377d..9514f27cc60 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-95 --- - + # --description-- @@ -35,3 +32,47 @@ This preposition is used to show that something belongs to or is part of somethi ### --feedback-- This noun refers to a type of watch that has more features than just telling time, often including apps and internet connectivity. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 15.20 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.66 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md index b247dacc6dd..feadc88525d 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md @@ -5,10 +5,8 @@ challengeType: 22 dashedName: task-96 --- - + + # --description-- `To track` means to follow or monitor the progress, movement, or development of something or someone. @@ -44,3 +42,47 @@ This verb means to monitor or follow the course or progress of something, especi ### --feedback-- This verb means to make it easier or possible for someone to do something by offering services or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md index 99dcae91a0c..2c3332a8708 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-97 --- - + # --description-- @@ -45,3 +42,47 @@ This adjective means arranged in a systematic way, especially on a large scale. ### --feedback-- These are alerts or messages that prompt you to remember tasks or appointments. This word ends with `s`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md index 4d36b7b2989..49fbdc264ee 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-98 --- - + # --description-- @@ -51,3 +48,56 @@ It keeps him connected, tracks his health, and helps him stay organized ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.32, + "finishTime": 10.70, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 11.20 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md index 7185d037ed7..2d1e897054c 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-99 --- - + # --description-- @@ -35,3 +32,47 @@ This word is capitalized and in plural form. ### --feedback-- This word describes advanced mobile phones with extensive computing capabilities and connectivity. It is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 25.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.98 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md index 1f660afcb03..81e873d902e 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-100 --- - + # --description-- @@ -53,3 +50,47 @@ This adjective means something can be accessed or used, like apps in an app stor ### --feedback-- This word is used to indicate the highest degree or the greatest amount of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 25.24, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.60, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.10 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md index 6998dd4ffa5..1e063e1befc 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-101 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on whether design is a factor in Sarah's stated preferences. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.56, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 3.68, + "finishTime": 8.08, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 8.58 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md index dac54e85492..92b3b88cee4 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-102 --- - + # --description-- @@ -43,3 +40,47 @@ This verb means causing a significant change or improvement in something. This w ### --feedback-- This adjective refers to something that happens every day or is part of everyday life. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md index 66cda46110d..6e56479dc8d 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-103 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Bob mentions radio as a factor in transforming daily life. ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md index ec96099aa49..93b5cc92a66 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-104 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to talk about the current period of time or the present days. ### --feedback-- This noun refers to remote-controlled flying machines, often used for photography, racing, or recreation. This word is capitalized. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 39.78 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.20, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.70 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md index 2eb13bfcb4b..7bdc1f302f5 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-105 --- - + # --description-- @@ -43,3 +40,47 @@ This verb involves examining or investigating something in order to learn more a ### --feedback-- This noun refers to the art, practice, or job of taking pictures with a camera, capturing moments, and expressions. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md index 08e3ab9b847..95aa8e526fc 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-106 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective describes something extremely beautiful or impressive. ### --feedback-- In photography, this noun means photographs or the act of taking a photograph. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md index 1b7d3770f1d..f8e77d3a9fe 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-107 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective refers to something related to the air or happening in the sky. ### --feedback-- This noun refers to the specific viewpoints or positions from which photos are taken. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md index c172cb36554..cf2a562eb4c 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-108 --- - + # --description-- @@ -51,3 +48,56 @@ They allow for stunning aerial photography ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.2, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.78, + "finishTime": 9.98, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 10.48 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md index a67e640bd01..64e3aa577d5 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-109 --- - + # --description-- @@ -35,3 +32,47 @@ This adjective in the expression means allowing access, passage, or a view throu ### --feedback-- This noun refers to things that may happen or be the case in the future, often exciting or beneficial opportunities. it is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.48, + "finishTimestamp": 49.32 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.84, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 4.34 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md index a7c5acbe452..9a5e4ff7dc6 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-110 --- - + # --description-- @@ -35,3 +32,47 @@ This noun describes a strong feeling of enthusiasm or excitement for something o ### --feedback-- In this context, this adjective means that a feeling, especially a positive one like enthusiasm, can spread from one person to others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 49.52, + "finishTimestamp": 51.74 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.22, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.72 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md index 0578945ebcc..c64025643be 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-111 --- - + # --description-- @@ -51,3 +48,47 @@ This adjective describes something that arouses curiosity or is enjoyable and en ### --feedback-- This adjective means being in touch with others or having easy access to information, especially through technology. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 51.94, + "finishTimestamp": 56.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.10, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 5.60 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md index bc02e1710e1..fe30597a170 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-112 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on the enthusiasm and positivity in Sarah's statement. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.28, + "finishTimestamp": 55.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 6.26, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob. Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 6.46, + "finishTime": 10.36, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 10.86 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md index ebba772a320..20eaca5ac90 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md @@ -1,6 +1,5 @@ --- id: 65a533f54a5afeff6c6bb996 -videoId: nLDychdBwUg title: "Dialogue 5: Discussing Open-source Software" challengeType: 21 dashedName: dialogue-5-discussing-open-source-software @@ -13,3 +12,284 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Tom", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sophie", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.5, + "dialogue": { + "text": "Hey, Sophie, what motivates you", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 3.8, + "finishTime": 6.9, + "dialogue": { + "text": "to work on open-source software projects in your free time?", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 7.8, + "finishTime": 10.2, + "dialogue": { + "text": "Well, I love contributing to open-source projects!", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 10.5, + "finishTime": 13, + "dialogue": { + "text": "I really like the sense of community and collaboration.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 13.5, + "finishTime": 15.4, + "dialogue": { + "text": "It's incredible how people from around the world", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 15.4, + "finishTime": 17.5, + "dialogue": { + "text": "come together to create something amazing.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 18.2, + "finishTime": 20.4, + "dialogue": { + "text": "Yeah. I checked out some open-source projects,", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 20.5, + "finishTime": 23.1, + "dialogue": { + "text": "but I admit that I have problems with the amount of time", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 23.1, + "finishTime": 24.3, + "dialogue": { + "text": "it can take to contribute.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 24.7, + "finishTime": 27.1, + "dialogue": { + "text": "Sometimes, it can be so time-consuming.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 27.1, + "finishTime": 29.7, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 29.9, + "finishTime": 33.3, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 33.8, + "finishTime": 36.5, + "dialogue": { + "text": "Open source is all about transparency and accessibility,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 36.5, + "finishTime": 38.4, + "dialogue": { + "text": "and that's something I truly believe in.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 39, + "finishTime": 42.2, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 42.7, + "finishTime": 45.7, + "dialogue": { + "text": "For me, I like the idea of practicing my skills", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 45.7, + "finishTime": 48, + "dialogue": { + "text": "and getting recognition for my contributions.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 48.5, + "finishTime": 51.4, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 52.4, + "finishTime": 56, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 56.4, + "finishTime": 58, + "dialogue": { + "text": "there isn't much you can do to save it.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 58.4, + "finishTime": 61.4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 62.2, + "finishTime": 65.2, + "dialogue": { + "text": "That's true. The sustainability of open-source projects", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 65.2, + "finishTime": 67.5, + "dialogue": { + "text": "is something I'm growing to appreciate more.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 67.8, + "finishTime": 69.2, + "dialogue": { + "text": "Thanks for sharing your motivations.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 69.8, + "finishTime": 71.7, + "dialogue": { + "text": "I think I'll see if I can find a project", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 71.7, + "finishTime": 72.8, + "dialogue": { + "text": "to dedicate some spare time to.", + "align": "left" + } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 73.3 + }, + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 73.8 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md index a463dcea5d0..ee5d378ba03 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-113 --- - + # --description-- @@ -37,3 +34,47 @@ This preposition is used to indicate involvement or engagement in a particular a ### --feedback-- This part of the term refers to the origin or starting point, in this case, indicating that the software's foundational code is open and accessible to all. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md index 2d227ef6fe5..1e409d23632 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-114 --- - + # --description-- @@ -51,3 +48,47 @@ Think about whether Tom is asking about skills or the reasons behind an activity ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md index ab28bfe2622..395d2fa3522 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-115 --- - + # --description-- @@ -20,7 +17,7 @@ Sophie: Well, I love contributing to open-source projects! I really like the sen ## --sentence-- -`I really like the sense of _ and _.` +`Well, I love contributing to open-source projects! I really like the sense of _ and _.` ## --blanks-- @@ -37,3 +34,47 @@ Describes a group of people who share common interests or values, especially in ### --feedback-- Refers to the act of working with someone to produce or create something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md index c9e678c193b..e321ce0b307 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-116 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Sophie's enjoyment comes from personal recognition or somethi ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md index 7b9101449a3..6a2c024d0c1 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-117 --- - + # --description-- @@ -45,3 +42,47 @@ Refers to the earth or the globe. ### --feedback-- Indicates the act of joining with others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md index d2ba30725da..3917f0f08f3 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-118 --- - + # --description-- @@ -51,3 +48,47 @@ Sophie talks about working as a group. Is it about being famous or doing somethi ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md index a0b608d8342..a41f1bfc8cb 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-119 --- - + # --description-- @@ -20,7 +17,7 @@ Tom: Yeah. I checked some open-source projects, but I admit that I have problems ## --sentence-- -`Yeah. I checked some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` +`Yeah, I checked out some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` ## --blanks-- @@ -37,3 +34,47 @@ This verb means to confess or acknowledge something, often reluctantly. ### --feedback-- This noun is used to describe the quantity or measure of something, in this case, referring to time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 23.34 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.28, + "dialogue": { + "text": "Yeah, I checked out some open-source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.78 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md index 6bcebcf1558..64acf0261ac 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-120 --- - + # --description-- @@ -18,7 +15,7 @@ Tom "Sometimes, it can be so time-consuming." ## --sentence-- -`Sometimes, it can be _ time-_.` +`Sometimes it can be _ time-_.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to emphasize the degree of something, in this case, how much t ### --feedback-- This word describes activities that use up a lot of time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 23.52, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.64, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.14 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md index 2bbaf6f322f..a2ad29fdb26 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-121 --- - + # --description-- @@ -51,3 +48,56 @@ Think about if Tom says the projects are easy or something else. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Yeah, I checked out some open source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 7.46, + "finishTime": 10.10, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 10.60 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md index 26975fa42d5..52145efc9dc 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-122 --- - + # --description-- @@ -21,7 +18,7 @@ For example, if you say: `I decided to learn a new language and practice every d ## --sentence-- -`It can _ a _.` +`I understand, Tom. It can _ a _.` ## --blanks-- @@ -38,3 +35,47 @@ This word is used to talk about something being true or existing. ### --feedback-- This word means a promise to do something or give your time to it, showing you are ready to work hard and keep your word. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 28.72 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md index 4232fcd5dbb..10d1d55dd1f 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-123 --- - + # --description-- @@ -35,3 +32,47 @@ This verb, in this context, means to tolerate or bear, especially when talking a ### --feedback-- This adjective describes something not open or accessible to the general public or kept for the use of a specific person or group. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md index 25acc5b187b..4920280d317 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-124 --- - + # --description-- @@ -35,3 +32,47 @@ This word, ending in `-ing`, means to observe or witness something happening.. ### --feedback-- Also ending in `-ing`, this word is used to describe the state or condition of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md index e4878ae4f6c..feb206c8d3b 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-125 --- - + # --description-- @@ -37,3 +34,51 @@ This word means being open and clear about things. It ends with `-y`, showing it ### --feedback-- This word is about making things easy for everyone to use or get. It ends with `-ity`, showing it's about the state of being accessible. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 32.52, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 5.74, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.24 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md index 2e6e266c6ab..b1b1c1ca42c 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-126 --- - + # --description-- -Sophie expresses her thoughts on open-source projects.. +Sophie expresses her thoughts on open-source projects. # --question-- @@ -51,3 +48,56 @@ Reflect on Sophie's belief in open source and its benefits. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 7.16, + "dialogue": { + "text": "I understand, Tom. It can be a commitment, but I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.56, + "finishTime": 12.10, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 12.60 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md index 9ef306c9252..e6c5fe030c7 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-127 --- - + # --description-- @@ -35,3 +32,51 @@ This noun refers to the quality of being open and clear, especially about proces ### --feedback-- This noun describes something that provides a reason or incentive for someone to act in a certain way or to put in more effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 41.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md index bbaba54e9e1..e05f1982063 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-128 --- - + # --description-- @@ -37,3 +34,51 @@ This verb means to perform an activity or exercise repeatedly or regularly in or ### --feedback-- This noun refers to the action or process of acknowledging someone's efforts, achievements, or qualities. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 41.5, + "finishTimestamp": 47.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.62, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.12 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md index a821137445a..5d15ffd7545 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-129 --- - + # --description-- @@ -35,3 +32,51 @@ This adjective is used to describe something that is very good or impressive. ### --feedback-- This adjective means having the ability, power, or qualities necessary to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 47.54, + "finishTimestamp": 50.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.9, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.4 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md index 76ee25756a6..045d8463245 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-130 --- - + # --description-- @@ -51,3 +48,69 @@ Reflect on whether Tom's attraction to open-source is about tight schedules. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 50.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.42, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.88, + "finishTime": 10.2, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 10.72, + "finishTime": 13.62, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 14.12 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md index f47924c5a21..763fa02b646 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-131 --- - + # --description-- @@ -18,7 +15,7 @@ Sophie: Also, when software becomes obsolete because it's no longer maintained, ## --sentence-- -`Also, when software becomes _, there isn't _ you can do to _ it.` +`Also, when software becomes _ because it's no longer maintained, there isn't _ you can do to _ it.` ## --blanks-- @@ -43,3 +40,51 @@ This word is used to indicate a small amount or degree; not a lot. ### --feedback-- This verb means to keep safe or rescue from harm or danger, in this context, to try and make something usable again. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md index 27b0dbb43cf..a187bb8b293 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-132 --- - + # --description-- @@ -43,3 +40,51 @@ Something that once was true or possible is not the case anymore. ### --feedback-- This contraction of `is not` is used to express the negation of the statement that follows, indicating a limitation or impossibility. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md index 8941733f8b9..ca97fa188f9 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-133 --- - + # --description-- @@ -51,3 +48,51 @@ It can't be used effectively anymore ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md index e225360b121..baadc6b07e8 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-134 --- - + # --description-- @@ -18,7 +15,7 @@ AUDIO REFERENCE: ## --sentence-- -`With open-_, there's always a _ for continuous improvement.` +`With open _, there's always a _ for continuous improvement.` ## --blanks-- @@ -35,3 +32,51 @@ Refers to a model where the source code is available for anyone to see, modify, ### --feedback-- This noun means an opportunity or possibility for something to happen or be done, especially something desirable. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md index 410699942ed..15c83340f6f 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-135 --- - + # --description-- @@ -35,3 +32,51 @@ It indicates an ongoing, unending process of enhancement or development. ### --feedback-- It refers to the act of making something better, more effective, or more efficient. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md index a8c886124e7..7718697bd96 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-137 --- - + # --description-- @@ -27,3 +24,51 @@ Tom: The sustainability of open-source projects is something I'm growing to appr ### --feedback-- It refers to the ongoing development of open-source projects over the long term. it ends with `-y`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md index dcc88c43208..d6ae5f89d89 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-138 --- - + # --description-- -`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time,` means they might not like them at first, but after some timethey start to like them more. +`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time` means they might not like them at first, but after some timethey start to like them more. # --fillInTheBlank-- @@ -34,4 +31,52 @@ This word means being able to continue over time in a good way. ### --feedback-- -Starting to like something more as you understand it better. +Starting to like something more as you understand it better. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md index ecd1d6e7c95..abc9cf2415f 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-139 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on Tom's statement about sustainability and appreciation, not complexity ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md index a6a32b631e8..87c40eaf830 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-140 --- - + # --description-- @@ -47,3 +44,51 @@ This verb means to discover or locate something after searching for it. ### --feedback-- Describes time that is available to use as you wish, not taken up by work or other obligations. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md index bd2fddb1bb4..52d0740b1db 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-141 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on whether Tom's interest is in language learning or engaging in a proje ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md index ea7dbd6dc1e..05dc28f6ddc 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-1 --- - + # --description-- @@ -18,7 +15,7 @@ Listen to what Brian asks Maria. Pay attention to the verbs he uses. ## --sentence-- -`Hey Maria, I _ a question. Do you know what _ the team?` +`Maria, I _ a question. Do you know what _ the team?` ## --blanks-- @@ -35,3 +32,47 @@ This verb is used when someone is in possession of something or wants to express ### --feedback-- This word means to give someone a reason to do something. This verb in conjugated in the third person. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 3.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.02 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md index d39e86e67e9..ef6b246a2e4 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-2 --- - + # --description-- @@ -39,3 +36,47 @@ This word is used to indicate the reason or cause of something. It is conjugated ### --feedback-- It ends with `-ed` because it's an adjective that comes from a verb. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 3.92, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.50, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.00 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md index 5c39c1c7312..050241fa5e6 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-3 --- - + # --description-- @@ -20,7 +17,7 @@ Listen to the audio and complete the sentence. ## --sentence-- -`Hey Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` +`Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` ## --blanks-- @@ -37,3 +34,56 @@ Think about the word that means to give someone a reason to do something right n ### --feedback-- This word describes how someone feels when they have a reason or desire to do something. This word ends with `-ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md index 4a6aa89ed04..90a6bbe82b3 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md @@ -5,20 +5,17 @@ challengeType: 19 dashedName: task-4 --- - + # --description-- -In the dialogue, Brian asks three questions but they are all connected. +In the dialogue, Brian asks a couple of related questions. # --question-- ## --text-- -`What is Brian asking Maria about?` +What is Brian asking Maria about? ## --answers-- @@ -51,3 +48,56 @@ The conversation is centered around motivation, not the physical location of whe ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md index 3e923e63532..f725307b614 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-21 --- - + # --description-- @@ -36,3 +33,46 @@ This word means working together with others on a project or task. It ends with This word means thinking of many ideas together with a group of people. It ends with `-ing`. +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md index 1c4102ed1d3..2522ee2b5e1 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-22 --- - + # --description-- @@ -51,3 +48,47 @@ Maria refers to her creative team, not her friends, as her collaborators. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.28 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.28 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md index c3f28429a68..ab0e4646869 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-23 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to create or produce something, especially ideas or solutions. ### --feedback-- This word refers to ideas or plans that are used in thinking, discussion, or creating something new. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 41.84, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.78, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.28 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md index c2510030f2c..8795bdf6d10 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-24 --- - + # --description-- @@ -51,3 +48,56 @@ Collaborating with the creative team ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.70, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.14, + "finishTime": 7.92, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 8.42 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md index 3c6ee35860c..b801e7efce9 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-25 --- - + # --description-- @@ -35,3 +32,47 @@ This word means working together with others to achieve a goal. This word is cap ### --feedback-- This word refers to the use of imagination or original ideas to create something. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 48.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.22 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md index a9680b0824a..75c938c595f 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-27 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to find something or someone without planning to, especially pro ### --feedback-- This word is used for problems with machines or computers that need special knowledge to understand or fix. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md index 5ee0b89f981..89a97ac83d7 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-29 --- - + # --description-- @@ -27,3 +24,47 @@ When something is `frustrating`, it makes you feel upset or annoyed because you ### --feedback-- This word is used when something makes you feel upset or annoyed because it is difficult or impossible to deal with. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 53.02, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.50, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.00 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md index 1f9e7b21387..02733f0f66c 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-30 --- - + # --description-- @@ -51,3 +48,65 @@ Does having many ideas make Brian frustrated, or is it something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 5.02, + "finishTime": 9.34, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 9.74, + "finishTime": 11.24, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 11.74 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md index 3dddb17e8ef..47e9d5633b4 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-31 --- - + # --description-- @@ -35,3 +32,47 @@ This word means little problems with things like computers or apps. When there a ### --feedback-- This word means to make an effort to do something, especially when it's hard. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md index fe21921444c..ce9ced73581 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-33 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether taking a break is mentioned as a way to deal with glitches. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md index 69d94c303e5..7c44898f823 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-34 --- - + # --description-- @@ -37,3 +34,47 @@ This word means being very excited or eager about something. It's like when you ### --feedback-- This word means finding a way to fix a problem. It's like when you figure out the answer to a difficult question. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.76, + "finishTimestamp": 65.66 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.90, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.40 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md index 0365cb0e9f0..17d79cd22ec 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md @@ -6,10 +6,7 @@ dashedName: task-36 --- - + # --description-- @@ -52,3 +49,56 @@ Reflect on whether the speed of solving problems is what Maria highlights as mot ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.96, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.7, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.16, + "finishTime": 8.84, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 9.34 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md index 7525fdadd5f..39df7aceed5 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-37 --- - + # --description-- @@ -18,7 +15,7 @@ In this part of the conversation, Brian talks about how the talk made him feel a ## --sentence-- -`Yeah. Wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` +`Yeah, wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` ## --blanks-- @@ -35,3 +32,47 @@ This word means something that gives you energy or a reason to do something. It' ### --feedback-- This word means giving something that you have to others. It's like when you tell someone your ideas or feelings. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 70.38, + "finishTimestamp": 76.10 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 6.72, + "dialogue": { + "text": "Yeah, wow. You know what? This was a really motivating talk. Thanks for sharing your thoughts.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.22 + } + ] +} +``` diff --git a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md index 6bb2b29cd3b..b1bcee11103 100644 --- a/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md +++ b/curriculum/challenges/portuguese/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-136 --- - + # --description-- @@ -51,3 +48,60 @@ Reflect on the connection between updates and user experience Sophie suggests. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.02, + "finishTime": 10.02, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md b/curriculum/challenges/swahili/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md index fa69314f96f..2a29cafcb43 100644 --- a/curriculum/challenges/swahili/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md +++ b/curriculum/challenges/swahili/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md @@ -26,7 +26,7 @@ Here's an example: # --instructions-- -Time to take a break from Camper Cat and meet fellow camper Zersiax (@zersiax), a champion of accessibility and a screen reader user. To hear a clip of his screen reader in action, add an `audio` element after the `p` element. Include the `controls` attribute. Then place a `source` element inside the `audio` tags with the `src` attribute set to `https://s3.amazonaws.com/freecodecamp/screen-reader.mp3` and `type` attribute set to `"audio/mpeg"`. +Time to take a break from Camper Cat and meet fellow camper Zersiax (@zersiax), a champion of accessibility and a screen reader user. To hear a clip of his screen reader in action, add an `audio` element after the `p` element. Include the `controls` attribute. Then place a `source` element inside the `audio` tags with the `src` attribute set to `https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3` and `type` attribute set to `"audio/mpeg"`. **Note:** The audio clip may sound fast and be difficult to understand, but that is a normal speed for screen reader users. @@ -70,7 +70,7 @@ The value for the `src` attribute on the `source` tag should match the link in t ```js assert( $('source').attr('src') === - 'https://s3.amazonaws.com/freecodecamp/screen-reader.mp3' + 'https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3' ); ``` @@ -108,7 +108,7 @@ assert($('source').attr('type') === 'audio/mpeg');

A sound clip of Zersiax's screen reader in action.

diff --git a/curriculum/challenges/swahili/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md b/curriculum/challenges/swahili/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md index 4a962f6cbe3..6fcb638bc4f 100644 --- a/curriculum/challenges/swahili/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md +++ b/curriculum/challenges/swahili/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md @@ -93,7 +93,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -186,7 +186,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/swahili/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md b/curriculum/challenges/swahili/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md index 0b04433a062..a2e11892c5e 100644 --- a/curriculum/challenges/swahili/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md +++ b/curriculum/challenges/swahili/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md @@ -102,7 +102,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -198,7 +198,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/swahili/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md b/curriculum/challenges/swahili/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md index 631b1dccb19..fd1a4f954fb 100644 --- a/curriculum/challenges/swahili/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md +++ b/curriculum/challenges/swahili/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md @@ -95,7 +95,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -190,7 +190,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/swahili/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md b/curriculum/challenges/swahili/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md index 5af68b129b0..935a533409a 100644 --- a/curriculum/challenges/swahili/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md +++ b/curriculum/challenges/swahili/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md @@ -98,7 +98,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -192,7 +192,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md new file mode 100644 index 00000000000..47a2bcd6988 --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md @@ -0,0 +1,887 @@ +--- +id: 5e44413e903586ffb414c94e +title: Build a Budget App Project +challengeType: 23 +forumTopicId: 462361 +dashedName: build-a-budget-app-project +--- + +# --description-- + +Complete the `Category` class. It should be able to instantiate objects based on different budget categories like *food*, *clothing*, and *entertainment*. When objects are created, they are passed in the name of the category. The class should have an instance variable called `ledger` that is a list. The class should also contain the following methods: + +- A `deposit` method that accepts an amount and description. If no description is given, it should default to an empty string. The method should append an object to the ledger list in the form of `{"amount": amount, "description": description}`. +- A `withdraw` method that is similar to the `deposit` method, but the amount passed in should be stored in the ledger as a negative number. If there are not enough funds, nothing should be added to the ledger. This method should return `True` if the withdrawal took place, and `False` otherwise. +- A `get_balance` method that returns the current balance of the budget category based on the deposits and withdrawals that have occurred. +- A `transfer` method that accepts an amount and another budget category as arguments. The method should add a withdrawal with the amount and the description "Transfer to [Destination Budget Category]". The method should then add a deposit to the other budget category with the amount and the description "Transfer from [Source Budget Category]". If there are not enough funds, nothing should be added to either ledgers. This method should return `True` if the transfer took place, and `False` otherwise. +- A `check_funds` method that accepts an amount as an argument. It returns `False` if the amount is greater than the balance of the budget category and returns `True` otherwise. This method should be used by both the `withdraw` method and `transfer` method. + +When the budget object is printed it should display: + +- A title line of 30 characters where the name of the category is centered in a line of `*` characters. +- A list of the items in the ledger. Each line should show the description and amount. The first 23 characters of the description should be displayed, then the amount. The amount should be right aligned, contain two decimal places, and display a maximum of 7 characters. +- A line displaying the category total. + +Here is an example usage: + +```py +food = Category("Food") +food.deposit(1000, "deposit") +food.withdraw(10.15, "groceries") +food.withdraw(15.89, "restaurant and more food for dessert") +clothing = Category("Clothing") +food.transfer(50, clothing) +print(food) +``` + +And here is an example of the output: + +```bash +*************Food************* +initial deposit 1000.00 +groceries -10.15 +restaurant and more foo -15.89 +Transfer to Clothing -50.00 +Total: 923.96 +``` + +Besides the `Category` class, create a function (outside of the class) called `create_spend_chart` that takes a list of categories as an argument. It should return a string that is a bar chart. + +The chart should show the percentage spent in each category passed in to the function. The percentage spent should be calculated only with withdrawals and not with deposits. Down the left side of the chart should be labels 0 - 100. The "bars" in the bar chart should be made out of the "o" character. The height of each bar should be rounded down to the nearest 10. The horizontal line below the bars should go two spaces past the final bar. Each category name should be written vertically below the bar. There should be a title at the top that says "Percentage spent by category". + +This function will be tested with up to four categories. + +Look at the example output below very closely and make sure the spacing of the output matches the example exactly. + +```bash +Percentage spent by category +100| + 90| + 80| + 70| + 60| o + 50| o + 40| o + 30| o + 20| o o + 10| o o o + 0| o o o + ---------- + F C A + o l u + o o t + d t o + h + i + n + g +``` + +# --hints-- + +The `deposit` method should create a specific object in the ledger instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit(self): + self.food.deposit(900, "deposit") + actual = self.food.ledger[0] + expected = {"amount": 900, "description": "deposit"} + self.assertEqual(actual, expected, 'Expected "deposit" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `deposit` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit_no_description(self): + self.food.deposit(45.56) + actual = self.food.ledger[0] + expected = {"amount": 45.56, "description": ""} + self.assertEqual(actual, expected, 'Expected calling "deposit" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should create a specific object in the `ledger` instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": "milk, cereal, eggs, bacon, bread"} + self.assertEqual(actual, expected, 'Expected "withdraw" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `withdraw` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": ""} + self.assertEqual(actual, expected, 'Expected "withdraw" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `True` if the withdrawal took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + self.assertEqual(good_withdraw, True, 'Expected "withdraw" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `food.deposit(900, "deposit")` and `food.withdraw(45.67, "milk, cereal, eggs, bacon, bread")` should return a balance of `854.33`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_get_balance(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.get_balance() + expected = 854.33 + self.assertEqual(actual, expected, 'Expected balance to be 854.33') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `transfer` method on a category object should create a specific ledger item in that category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.food.ledger[2] + expected = {"amount": -transfer_amount, "description": "Transfer to Entertainment"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `True` if the transfer took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + self.assertEqual(good_transfer, True, 'Expected "transfer" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `transfer` on a category object should reduce the balance in the category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + food_balance_before = self.food.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + food_balance_after = self.food.get_balance() + self.assertEqual(food_balance_before - food_balance_after, transfer_amount, 'Expected "transfer" method to reduce balance in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should increase the balance of the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + entertainment_balance_before = self.entertainment.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + entertainment_balance_after = self.entertainment.get_balance() + self.assertEqual(entertainment_balance_after - entertainment_balance_before, transfer_amount, 'Expected "transfer" method to increase balance in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should create a specific ledger item in the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.entertainment.ledger[0] + expected = {"amount": transfer_amount, "description": "Transfer from Food"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `False` if the amount passed to the method is greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(20) + expected = False + self.assertEqual(actual, expected, 'Expected "check_funds" method to be False') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `True` if the amount passed to the method is not greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(10) + expected = True + self.assertEqual(actual, expected, 'Expected "check_funds" method to be True') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `False` if the withdrawal didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_funds(self): + self.food.deposit(100, "deposit") + good_withdraw = self.food.withdraw(100.10) + self.assertEqual(good_withdraw, False, 'Expected "withdraw" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `False` if the transfer didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer_no_funds(self): + self.food.deposit(100, "deposit") + good_transfer = self.food.transfer(200, self.entertainment) + self.assertEqual(good_transfer, False, 'Expected "transfer" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Printing a `Category` instance should give a different string representation of the object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_to_string(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + self.food.transfer(20, self.entertainment) + actual = str(self.food) + expected = "*************Food*************\\ndeposit 900.00\\nmilk, cereal, eggs, bac -45.67\\nTransfer to Entertainme -20.00\\nTotal: 834.33" + self.assertEqual(actual, expected, 'Expected different string representation of object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +` + const out = runPython(testCode); + assert(out); + } +}) +``` + +`create_spend_chart` should print a different chart representation. Check that all spacing is exact. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + self.business = budget.Category("Business") + + def test_create_spend_chart(self): + self.food.deposit(900, "deposit") + self.entertainment.deposit(900, "deposit") + self.business.deposit(900, "deposit") + self.food.withdraw(105.55) + self.entertainment.withdraw(33.40) + self.business.withdraw(10.99) + actual = budget.create_spend_chart([self.business, self.food, self.entertainment]) + expected = "Percentage spent by category\\n100| \\n 90| \\n 80| \\n 70| o \\n 60| o \\n 50| o \\n 40| o \\n 30| o \\n 20| o o \\n 10| o o \\n 0| o o o \\n ----------\\n B F E \\n u o n \\n s o t \\n i d e \\n n r \\n e t \\n s a \\n s i \\n n \\n m \\n e \\n n \\n t " + self.assertEqual(actual, expected, 'Expected different chart representation. Check that all spacing is exact.') +`); + + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Category: + pass + +def create_spend_chart(categories): + pass +``` + +# --solutions-- + +```py +class Category: + + def __init__(self, name): + self.name = name + self.ledger = [] + self.balance = 0 + self.spent = 0 + + def __str__(self): + first_line = f'{self.name.center(30, "*")}\n' + lines = '' + total = f'Total: {format(self.balance, ".2f")}' + + for n in range(len(self.ledger)): + descr = self.ledger[n]["description"][:23] + am = format(float(self.ledger[n]["amount"]), ".2f")[:7] + lines = lines + f'{descr:<23}{am:>7}\n' + + return f'{first_line}{lines}{total}' + + def deposit(self, amount, description=''): + self.ledger.append({ + 'amount': float(amount), + 'description': description + }) + self.balance = self.balance + float(amount) + + def withdraw(self, amount, description=''): + if self.check_funds(amount): + self.ledger.append({ + 'amount': -float(amount), + 'description': description + }) + self.balance = self.balance - float(amount) + self.spent = self.spent + float(amount) + return True + else: + return False + + def get_balance(self): + return self.balance + + def transfer(self, amount, category): + if self.check_funds(amount): + # withdraw + self.ledger.append({ + 'amount': -float(amount), + 'description': f'Transfer to {category.name}' + }) + self.balance = self.balance - float(amount) + # deposit + category.deposit(amount, f'Transfer from {self.name}') + + return True + else: + return False + + def check_funds(self, amount): + if float(amount) > self.balance: + return False + else: + return True + + +def create_spend_chart(categories): + total_expenses = 0 + obj = {} + col1 = [] + str = [] + final_str = 'Percentage spent by category\n' + label_max_length = 0 + label_strings = [] + + for category in categories: + total_expenses = total_expenses + category.spent + obj[category.name] = {'expenses': category.spent} + obj[category.name]['label'] = list(category.name) + if len(obj[category.name]['label']) > label_max_length: + label_max_length = len(obj[category.name]['label']) + + for category in categories: + obj[category.name]['percent'] = ( + (category.spent / total_expenses * 100) // 10) * 10 + obj[category.name]['column'] = [] + for i in range(0, 110, 10): + if obj[category.name]['percent'] >= i: + obj[category.name]['column'].insert(0, 'o') + else: + obj[category.name]['column'].insert(0, ' ') + + for i in range(0, 110, 10): + col1.insert(0, i) + + for i in range(11): + str.append("") + for key in obj: + str[i] += (f'{obj[key]["column"][i]} ') + final_str += f'{col1[i]:>3}| {str[i]}\n' + final_str += f' {"-"*(1+3*len(obj))}\n ' + + for i in range(label_max_length): + label_strings.append(' ') + for k in obj: + if len(obj[k]['label']) < label_max_length: + obj[k]['label'].extend( + f'{" "*(label_max_length-len(obj[k]["label"]))}') + + label_strings[i] += f'{obj[k]["label"][i]} ' + if i < label_max_length - 1: + label_strings[i] += '\n ' + final_str += label_strings[i] + + print(final_str) + return (final_str) + +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md new file mode 100644 index 00000000000..ef719adc3a7 --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md @@ -0,0 +1,869 @@ +--- +id: 5e444147903586ffb414c94f +title: Build a Polygon Area Calculator Project +challengeType: 23 +forumTopicId: 462363 +dashedName: build-a-polygon-area-calculator-project +--- + +# --description-- + +In this project you will use object oriented programming to create a `Rectangle` class and a `Square` class. The `Square` class should be a subclass of `Rectangle`, and inherit its methods and attributes. + +## Rectangle class + +When a Rectangle object is created, it should be initialized with `width` and `height` attributes. The class should also contain the following methods: + +- `set_width` +- `set_height` +- `get_area`: Returns area (`width * height`) +- `get_perimeter`: Returns perimeter (`2 * width + 2 * height`) +- `get_diagonal`: Returns diagonal (`(width ** 2 + height ** 2) ** .5`) +- `get_picture`: Returns a string that represents the shape using lines of "\*". The number of lines should be equal to the height and the number of "\*" in each line should be equal to the width. There should be a new line (`\n`) at the end of each line. If the width or height is larger than 50, this should return the string: "Too big for picture.". +- `get_amount_inside`: Takes another shape (square or rectangle) as an argument. Returns the number of times the passed in shape could fit inside the shape (with no rotations). For instance, a rectangle with a width of 4 and a height of 8 could fit in two squares with sides of 4. + +Additionally, if an instance of a `Rectangle` is represented as a string, it should look like: `Rectangle(width=5, height=10)` + +## Square class + +The `Square` class should be a subclass of `Rectangle`. When a `Square` object is created, a single side length is passed in. The `__init__` method should store the side length in both the `width` and `height` attributes from the `Rectangle` class. + +The `Square` class should be able to access the `Rectangle` class methods but should also contain a `set_side` method. If an instance of a `Square` is represented as a string, it should look like: `Square(side=9)` + +Additionally, the `set_width` and `set_height` methods on the `Square` class should set both the width and height. + +## Usage example + +```py +rect = Rectangle(10, 5) +print(rect.get_area()) +rect.set_height(3) +print(rect.get_perimeter()) +print(rect) +print(rect.get_picture()) + +sq = Square(9) +print(sq.get_area()) +sq.set_side(4) +print(sq.get_diagonal()) +print(sq) +print(sq.get_picture()) + +rect.set_height(8) +rect.set_width(16) +print(rect.get_amount_inside(sq)) +``` + +That code should return: + +```bash +50 +26 +Rectangle(width=10, height=3) +********** +********** +********** + +81 +5.656854249492381 +Square(side=4) +**** +**** +**** +**** + +8 +``` + +# --hints-- + +The `Square` class should be a subclass of the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_subclass(self): + actual = issubclass(shape_calculator.Square, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a subclass of the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `Square` class should be a distinct class from the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_distinct_classes(self): + actual = shape_calculator.Square is not shape_calculator.Rectangle + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a distinct class from the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +A square object should be an instance of the `Square` class and the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_is_square_and_rectangle(self): + actual = isinstance(self.sq, shape_calculator.Square) and isinstance(self.sq, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected square object to be an instance of the Square class and the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Rectangle(3, 6)` should be `Rectangle(width=3, height=6)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_string(self): + actual = str(self.rect) + expected = "Rectangle(width=3, height=6)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle to be "Rectangle(width=3, height=6)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Square(5)` should be `Square(side=5)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_string(self): + actual = str(self.sq) + expected = "Square(side=5)" + self.assertEqual(actual, expected, 'Expected string representation of square to be "Square(side=5)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_area()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_area(self): + actual = self.rect.get_area() + expected = 18 + self.assertEqual(actual, expected, 'Expected area of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_area()` should return `25`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_area(self): + actual = self.sq.get_area() + expected = 25 + self.assertEqual(actual, expected, 'Expected area of square to be 25') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_perimeter()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_perimeter(self): + actual = self.rect.get_perimeter() + expected = 18 + self.assertEqual(actual, expected, 'Expected perimeter of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_perimeter()` should return `20`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_perimeter(self): + actual = self.sq.get_perimeter() + expected = 20 + self.assertEqual(actual, expected, 'Expected perimeter of square to be 20') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_diagonal()` should return `6.708203932499369`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_diagonal(self): + actual = self.rect.get_diagonal() + expected = 6.708203932499369 + self.assertEqual(actual, expected, 'Expected diagonal of rectangle to be 6.708203932499369') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_diagonal()` should return `7.0710678118654755`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_diagonal(self): + actual = self.sq.get_diagonal() + expected = 7.0710678118654755 + self.assertEqual(actual, expected, 'Expected diagonal of square to be 7.0710678118654755') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Rectangle` class should have a different string representation after setting new values. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_set_attributes(self): + self.rect.set_width(7) + self.rect.set_height(8) + actual = str(self.rect) + expected = "Rectangle(width=7, height=8)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle after setting new values to be "Rectangle(width=7, height=8)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_side()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_side(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_width()` or `set_height()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_height(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') + self.sq.set_width(4) + actual = str(self.sq) + expected = "Square(side=4)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting width to be "Square(side=4)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Rectangle` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_picture(self): + self.rect.set_width(7) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "*******\\n*******\\n*******\\n" + self.assertEqual(actual, expected, 'Expected rectangle picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Square` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_picture(self): + self.sq.set_side(2) + actual = self.sq.get_picture() + expected = "**\\n**\\n" + self.assertEqual(actual, expected, 'Expected square picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return the string `Too big for picture.` if the `width` or `height` attributes are larger than `50`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_big_picture(self): + self.rect.set_width(51) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "Too big for picture." + self.assertEqual(actual, expected, 'Expected message: "Too big for picture."') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(15,10).get_amount_inside(Square(5))` should return `6`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + self.sq = shape_calculator.Square(5) + + def test_get_amount_inside(self): + self.rect.set_height(10) + self.rect.set_width(15) + actual = self.rect.get_amount_inside(self.sq) + expected = 6 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 6.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(4,8).get_amount_inside(Rectangle(3, 6))` should return `1`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_two_rectangles(self): + rect2 = shape_calculator.Rectangle(4, 8) + actual = rect2.get_amount_inside(self.rect) + expected = 1 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 1.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(2,3).get_amount_inside(Rectangle(3, 6))` should return `0`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_none(self): + rect2 = shape_calculator.Rectangle(2, 3) + actual = rect2.get_amount_inside(self.rect) + expected = 0 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 0.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Rectangle: + pass + +class Square: + pass +``` + +# --solutions-- + +```py +class Rectangle: + def __init__(self, width, height): + self.width = width + self.height = height + + def __str__(self): + return f'Rectangle(width={self.width}, height={self.height})' + + def set_width(self, width): + self.width = width + + def set_height(self, height): + self.height = height + + def get_area(self): + area = self.width * self.height + return area + + def get_perimeter(self): + perimeter = self.width * 2 + self.height * 2 + return perimeter + + def get_diagonal(self): + diagonal = (self.width ** 2 + self.height ** 2) ** 0.5 + return diagonal + + def get_picture(self): + if self.width < 50 and self.height < 50: + picture = f'{"*"*self.width}\n'*self.height + return picture + else: + return 'Too big for picture.' + + def get_amount_inside(self, polygon): + h_number = self.height // polygon.height + w_number = self.width // polygon.width + repetition = h_number * w_number + return repetition + + +class Square(Rectangle): + def __init__(self, side): + self.width = side + self.height = side + + def __str__(self): + return f'Square(side={self.width})' + + def set_width(self, side): + self.width = side + self.height = side + + def set_height(self, side): + self.height = side + self.width = side + + def set_side(self,side): + self.width = side + self.height = side + +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md new file mode 100644 index 00000000000..94cf5c682de --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md @@ -0,0 +1,300 @@ +--- +id: 5e44414f903586ffb414c950 +title: Build a Probability Calculator Project +challengeType: 23 +forumTopicId: 462364 +dashedName: build-a-probability-calculator-project +--- + +# --description-- + +Suppose there is a hat containing 5 blue balls, 4 red balls, and 2 green balls. What is the probability that a random draw of 4 balls will contain at least 1 red ball and 2 green balls? While it would be possible to calculate the probability using advanced mathematics, an easier way is to write a program to perform a large number of experiments to estimate an approximate probability. + +For this project, you will write a program to determine the approximate probability of drawing certain balls randomly from a hat. + +First, create a `Hat` class in `main.py`. The class should take a variable number of arguments that specify the number of balls of each color that are in the hat. For example, a class object could be created in any of these ways: + +```py +hat1 = Hat(yellow=3, blue=2, green=6) +hat2 = Hat(red=5, orange=4) +hat3 = Hat(red=5, orange=4, black=1, blue=0, pink=2, striped=9) +``` + +A hat will always be created with at least one ball. The arguments passed into the hat object upon creation should be converted to a `contents` instance variable. `contents` should be a list of strings containing one item for each ball in the hat. Each item in the list should be a color name representing a single ball of that color. For example, if your hat is `{"red": 2, "blue": 1}`, `contents` should be `["red", "red", "blue"]`. + +The `Hat` class should have a `draw` method that accepts an argument indicating the number of balls to draw from the hat. This method should remove balls at random from `contents` and return those balls as a list of strings. The balls should not go back into the hat during the draw, similar to an urn experiment without replacement. If the number of balls to draw exceeds the available quantity, return all the balls. + +Next, create an `experiment` function in `main.py` (not inside the `Hat` class). This function should accept the following arguments: + +- `hat`: A hat object containing balls that should be copied inside the function. +- `expected_balls`: An object indicating the exact group of balls to attempt to draw from the hat for the experiment. For example, to determine the probability of drawing 2 blue balls and 1 red ball from the hat, set `expected_balls` to `{"blue":2, "red":1}`. +- `num_balls_drawn`: The number of balls to draw out of the hat in each experiment. +- `num_experiments`: The number of experiments to perform. (The more experiments performed, the more accurate the approximate probability will be.) + +The `experiment` function should return a probability. + +For example, if you want to determine the probability of getting at least two red balls and one green ball when you draw five balls from a hat containing six black, four red, and three green. To do this, you will perform `N` experiments, count how many times `M` you get at least two red balls and one green ball, and estimate the probability as `M/N`. Each experiment consists of starting with a hat containing the specified balls, drawing several balls, and checking if you got the balls you were attempting to draw. + +Here is how you would call the `experiment` function based on the example above with 2000 experiments: + +```py +hat = Hat(black=6, red=4, green=3) +probability = experiment(hat=hat, + expected_balls={"red":2,"green":1}, + num_balls_drawn=5, + num_experiments=2000) +``` + +The output would be something like this: + +```bash +0.356 +``` + +Since this is based on random draws, the probability will be slightly different each time the code is run. + +_Hint: Consider using the modules that are already imported at the top. Do not initialize random seed within the file._ + + +# --hints-- + +Creation of `hat` object should add correct contents. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_class_contents(self): + hat = probability_calculator.Hat(red=3,blue=2) + actual = hat.contents + expected = ["red","red","red","blue","blue"] + self.assertEqual(actual, expected, 'Expected creation of hat object to add correct contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method in `hat` class should reduce number of items in contents. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw(self): + hat = probability_calculator.Hat(red=5,blue=2) + actual = hat.draw(2) + expected = ['blue', 'red'] + self.assertEqual(actual, expected, 'Expected hat draw to return two random items from hat contents.') + actual = len(hat.contents) + expected = 5 + self.assertEqual(actual, expected, 'Expected hat draw to reduce number of items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method should behave correctly when the number of balls to extract is bigger than the number of balls in the hat. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw_2(self): + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + actual = hat.draw(20) + expected = ['yellow', 'yellow', 'yellow', 'yellow', 'yellow', 'red', 'green', 'green', 'green', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'test'] + self.assertEqual(actual, expected, 'Expected hat draw to return all items from hat contents.') + actual = len(hat.contents) + expected = 0 + self.assertEqual(actual, expected, 'Expected hat draw to leave no items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `experiment` method should return a different probability. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_prob_experiment(self): + hat = probability_calculator.Hat(blue=3,red=2,green=6) + probability = probability_calculator.experiment(hat=hat, expected_balls={"blue":2,"green":1}, num_balls_drawn=4, num_experiments=1000) + actual = probability + expected = 0.272 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + probability = probability_calculator.experiment(hat=hat, expected_balls={"yellow":2,"blue":3,"test":1}, num_balls_drawn=20, num_experiments=100) + actual = probability + expected = 1.0 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +# --seed-- + +## --seed-contents-- + +```py +import copy +import random + +class Hat: + pass + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + pass +``` + +# --solutions-- + +```py +import copy +import random + +class Hat: + def __init__(self, **hat): + self.hat = hat + contents = [] + for i in hat: + for j in range(hat[i]): + contents.append(i) + self.contents = contents + + + def draw(self, number): + drawn = [] + if number >= len(self.contents): + drawn.extend(self.contents) + self.contents = [] + else: + for i in range(number): + drawn.append( + self.contents.pop(random.randrange(len(self.contents))) + ) + return drawn + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + expected_balls_list = [] + drawn_list = [] + success = 0 + for i in expected_balls: + for j in range(expected_balls[i]): + expected_balls_list.append(i) + for j in range(num_experiments): + hat_copy = copy.deepcopy(hat) + drawn_list.append(hat_copy.draw(num_balls_drawn)) + exp_ball_list_copy = expected_balls_list[:] + for k in range(len(drawn_list[j])): + try: + ind = exp_ball_list_copy.index(drawn_list[j][k]) + exp_ball_list_copy.pop(ind) + except: + continue + if len(exp_ball_list_copy) == 0: + success += 1 + probability = success/num_experiments + return probability +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md new file mode 100644 index 00000000000..05e60f0b74a --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md @@ -0,0 +1,582 @@ +--- +id: 5e444136903586ffb414c94d +title: Build a Time Calculator Project +challengeType: 23 +forumTopicId: 462360 +dashedName: build-a-time-calculator-project +--- + +# --description-- + +Write a function named `add_time` that takes in two required parameters and one optional parameter: + +- a start time in the 12-hour clock format (ending in AM or PM) +- a duration time that indicates the number of hours and minutes +- (optional) a starting day of the week, case insensitive + +The function should add the duration time to the start time and return the result. + +If the result will be the next day, it should show `(next day)` after the time. If the result will be more than one day later, it should show `(n days later)` after the time, where "n" is the number of days later. + +If the function is given the optional starting day of the week parameter, then the output should display the day of the week of the result. The day of the week in the output should appear after the time and before the number of days later. + +Below are some examples of different cases the function should handle. Pay close attention to the spacing and punctuation of the results. + +```py +add_time('3:00 PM', '3:10') +# Returns: 6:10 PM + +add_time('11:30 AM', '2:32', 'Monday') +# Returns: 2:02 PM, Monday + +add_time('11:43 AM', '00:20') +# Returns: 12:03 PM + +add_time('10:10 PM', '3:30') +# Returns: 1:40 AM (next day) + +add_time('11:43 PM', '24:20', 'tueSday') +# Returns: 12:03 AM, Thursday (2 days later) + +add_time('6:30 PM', '205:12') +# Returns: 7:42 AM (9 days later) +``` + +Do not import any Python libraries. Assume that the start times are valid times. The minutes in the duration time will be a whole number less than 60, but the hour can be any whole number. + +# --hints-- +Calling `add_time('3:30 PM', '2:12')` should return `'5:42 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +import time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period(self): + actual = time_calculator.add_time("3:30 PM", "2:12") + expected = "5:42 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12" to return "5:42 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:55 AM', '3:12')` should return `'3:07 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_different_period(self): + actual = time_calculator.add_time("11:55 AM", "3:12") + expected = "3:07 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:55 AM", "3:12" to return "3:07 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected time to end with `'(next day)'` when it is the next day. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_next_day(self): + actual = time_calculator.add_time("9:15 PM", "5:30") + expected = "2:45 AM (next day)" + self.assertEqual(actual, expected, 'Expected time to end with "(next day)" when it is the next day.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected period to change from `AM` to `PM` at `12:00`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_period_change_at_twelve(self): + actual = time_calculator.add_time("11:40 AM", "0:25") + expected = "12:05 PM" + self.assertEqual(actual, expected, 'Expected period to change from AM to PM at 12:00') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00')` should return `'2:59 AM (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four(self): + actual = time_calculator.add_time("2:59 AM", "24:00") + expected = "2:59 AM (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00" to return "2:59 AM (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05')` should return `'12:04 AM (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later(self): + actual = time_calculator.add_time("11:59 PM", "24:05") + expected = "12:04 AM (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05" to return "12:04 AM (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02')` should return `'6:18 AM (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration(self): + actual = time_calculator.add_time("8:16 PM", "466:02") + expected = "6:18 AM (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02" to return "6:18 AM (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected adding `0:00` to return the initial time. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_no_change(self): + actual = time_calculator.add_time("5:01 AM", "0:00") + expected = "5:01 AM" + self.assertEqual(actual, expected, 'Expected adding 0:00 to return initial time.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('3:30 PM', '2:12', 'Monday')`should return `'5:42 PM, Monday'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period_with_day(self): + actual = time_calculator.add_time("3:30 PM", "2:12", "Monday") + expected = "5:42 PM, Monday" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12", "Monday" to return "5:42 PM, Monday"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00', 'saturDay')` should return `'2:59 AM, Sunday (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four_with_day(self): + actual = time_calculator.add_time("2:59 AM", "24:00", "saturDay") + expected = "2:59 AM, Sunday (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00", "saturDay" to return "2:59 AM, Sunday (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05', 'Wednesday')` should return `'12:04 AM, Friday (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later_with_day(self): + actual = time_calculator.add_time("11:59 PM", "24:05", "Wednesday") + expected = "12:04 AM, Friday (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05", "Wednesday" to return "12:04 AM, Friday (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02', 'tuesday')`should return `'6:18 AM, Monday (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration_with_day(self): + actual = time_calculator.add_time("8:16 PM", "466:02", "tuesday") + expected = "6:18 AM, Monday (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02", "tuesday" to return "6:18 AM, Monday (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def add_time(start, duration): + + + + + + return new_time +``` + +# --solutions-- + +```py +def add_time(start, duration, day=''): + start_arr = start[0:-3].split(':') + dur_arr = duration.split(':') + tail = '' + # converting to 24h format + if 'AM' in start: + if start_arr[0] == '12': + start_arr[0] = '00' + elif 'PM' in start: + if start_arr[0] == '12': + start_arr[0] = '12' + else: + start_arr[0] = f'{int(start_arr[0]) + 12}' + + # adding minutes + sum_m = int(start_arr[1]) + int(dur_arr[1]) + if sum_m > 59: + + if (sum_m - 60 * (sum_m//60)) < 10: + mins = f'0{(sum_m - 60 * (sum_m//60))}' + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + + else: + mins = sum_m - 60 * (sum_m//60) + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + else: + if sum_m < 10: + mins = f'0{sum_m}' + else: + mins = sum_m + + #adding hours + sum_h = int(start_arr[0]) + int(dur_arr[0]) + if sum_h < 24: + hours= sum_h + #time_24 = f'{hours}:{mins}' + else: + days_after = sum_h//24 + if days_after == 1: + hours = sum_h - 24 + tail = ' (next day)' + else: + hours = sum_h - 24 * days_after + tail = f' ({days_after} days later)' + + #converting back to AM/PM + if hours == 0: + hours = 12 + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + elif hours < 12: + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + else: + if hours > 12: + hours = hours - 12 + time = f'{hours}:{mins} PM' + final_time = f'{time}{tail}' + + #days of the week + week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] + if day: + day = day.capitalize() + if not tail: + final_time = f'{time}, {day}' + elif tail == ' (next day)': + index = week.index(day) + 1 + if index == 7: + index = 0 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + elif tail: + index = (week.index(day) + days_after) % 7 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + + + print('\n') + print(final_time) + print('\n') + return final_time + +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md new file mode 100644 index 00000000000..4f112fd73c5 --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md @@ -0,0 +1,248 @@ +--- +id: 5e44412c903586ffb414c94c +title: Build an Arithmetic Formatter Project +challengeType: 23 +forumTopicId: 462359 +dashedName: build-an-arithmetic-formatter-project +--- + +# --description-- + +Students in primary school often arrange arithmetic problems vertically to make them easier to solve. For example, "235 + 52" becomes: + +```py + 235 ++ 52 +----- +``` + +Finish the `arithmetic_arranger` function that receives a list of strings which are arithmetic problems, and returns the problems arranged vertically and side-by-side. The function should optionally take a second argument. When the second argument is set to `True`, the answers should be displayed. + +## Example + +Function Call: + +```py +arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"]) +``` + +Output: + +```py + 32 3801 45 123 ++ 698 - 2 + 43 + 49 +----- ------ ---- ----- +``` + +Function Call: + +```py +arithmetic_arranger(["32 + 8", "1 - 3801", "9999 + 9999", "523 - 49"], True) +``` + +Output: + +```py + 32 1 9999 523 ++ 8 - 3801 + 9999 - 49 +---- ------ ------ ----- + 40 -3800 19998 474 +``` + +## Rules + +The function will return the correct conversion if the supplied problems are properly formatted, otherwise, it will **return** a **string** that describes an error that is meaningful to the user. + +- Situations that will return an error: + - If there are **too many problems** supplied to the function. The limit is **five**, anything more will return: `'Error: Too many problems.'` + - The appropriate operators the function will accept are **addition** and **subtraction**. Multiplication and division will return an error. Other operators not mentioned in this bullet point will not need to be tested. The error returned will be: `"Error: Operator must be '+' or '-'."` + - Each number (operand) should only contain digits. Otherwise, the function will return: `'Error: Numbers must only contain digits.'` + - Each operand (aka number on each side of the operator) has a max of four digits in width. Otherwise, the error string returned will be: `'Error: Numbers cannot be more than four digits.'` +- If the user supplied the correct format of problems, the conversion you return will follow these rules: + - There should be a single space between the operator and the longest of the two operands, the operator will be on the same line as the second operand, both operands will be in the same order as provided (the first will be the top one and the second will be the bottom). + - Numbers should be right-aligned. + - There should be four spaces between each problem. + - There should be dashes at the bottom of each problem. The dashes should run along the entire length of each problem individually. (The example above shows what this should look like.) + +# --hints-- + +`arithmetic_arranger(["3801 - 2", "123 + 49"])` should return `3801 123\n- 2 + 49\n------ -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3801 - 2", "123 + 49"]), ' 3801 123\\n- 2 + 49\\n------ -----')`); + } +}) +``` + +`arithmetic_arranger(["1 + 2", "1 - 9380"])` should return `1 1\n+ 2 - 9380\n--- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["1 + 2", "1 - 9380"]), ' 1 1\\n+ 2 - 9380\\n--- ------')`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `3 3801 45 123\n+ 855 - 2 + 43 + 49\n----- ------ ---- -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]), ' 3 3801 45 123\\n+ 855 - 2 + 43 + 49\\n----- ------ ---- -----')`); + } +}) +``` + +`arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"])` should return `11 3801 1 123 1\n+ 4 - 2999 + 2 + 49 - 9380\n---- ------ --- ----- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"]), ' 11 3801 1 123 1\\n+ 4 - 2999 + 2 + 49 - 9380\\n---- ------ --- ----- ------')`); + } +}) +``` + +`arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"])` should return `'Error: Too many problems.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"]), 'Error: Too many problems.')`); + } +}) +``` + +`arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `"Error: Operator must be '+' or '-'."`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Operator must be '+' or '-'.")`); + } +}) +``` + +`arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers cannot be more than four digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers cannot be more than four digits.")`); + } +}) +``` + +`arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers must only contain digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers must only contain digits.")`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "988 + 40"], True)` should return `3 988\n+ 855 + 40\n----- -----\n 858 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "988 + 40"], True), " 3 988\\n+ 855 + 40\\n----- -----\\n 858 1028")`); + } +}) +``` + +`arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True)` should return `32 1 45 123 988\n- 698 - 3801 + 43 + 49 + 40\n----- ------ ---- ----- -----\n -666 -3800 88 172 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True), " 32 1 45 123 988\\n- 698 - 3801 + 43 + 49 + 40\\n----- ------ ---- ----- -----\\n -666 -3800 88 172 1028")`); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def arithmetic_arranger(problems, show_answers=False): + + return problems + +print(f'\n{arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"])}') +``` + +# --solutions-- + +```py +def arithmetic_arranger(problems, result=False): + + lin1 = "" + lin2 = "" + lin3 = "" + lin4 = "" + + if len(problems) > 5: + return 'Error: Too many problems.' + for problem in problems: + [num1, sym, num2] = problem.split() + sign = ['+', '-'] + if sym not in sign: + return ("Error: Operator must be '+' or '-'.") + if len(num1) > 4 or len(num2) > 4: + return ("Error: Numbers cannot be more than four digits.") + if not num1.isnumeric() or not num2.isnumeric(): + return ("Error: Numbers must only contain digits.") + + lin1 += " " + num1 + " " if len(num1) >= len( + num2) else " " * (len(num2) + 2 - len(num1)) + num1 + " " + lin2 += sym + " " + num2 + " " if len(num2) >= len( + num1) else sym + " " * (len(num1) - len(num2) + 1) + num2 + " " + nmax = (len(num1) + 2) if len(num1) >= len(num2) else (len(num2) + 2) + lin3 += "-" * nmax + " " + op = int(num1) + int(num2) if sym == "+" else int(num1) - int(num2) + lin4 += (" " * (nmax - len(str(op)))) + str(op) + " " + + arranged_problems = lin1.rstrip() + "\n" + lin2.rstrip( + ) + "\n" + lin3.rstrip() + if result: + arranged_problems += "\n" + lin4.rstrip() + + return arranged_problems +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md index b8c258e1549..1f2ec211b08 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md @@ -23,7 +23,7 @@ Add a new key-value pair to your dictionary. Use the string `species` as the key You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 1 `)) }) @@ -32,7 +32,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have a `species` key with the value `guinea pig` inside your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig"} `)) }) diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md index fcafc622469..054d8e89933 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md @@ -14,7 +14,7 @@ Now, replace the existent keys with the strings `A` and `B` — one for each nod Your dictionary should have an `A` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "A" in my_graph `)) }) @@ -23,7 +23,7 @@ Your dictionary should have an `A` key. Your `A` key should have `B` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -32,7 +32,7 @@ Your `A` key should have `B` as the value. Your dictionary should have an `B` key. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "B" in my_graph `)) }) @@ -41,7 +41,7 @@ Your dictionary should have an `B` key. Your `B` key should have `A` as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["B"] == "A" `)) }) @@ -50,7 +50,7 @@ Your `B` key should have `A` as the value. Your dictionary should have two keys. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph) == 2 `)) }) diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md index 3805948a1fc..e36e0cbd908 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md @@ -16,7 +16,7 @@ Modify your existing dictionary to represent this arrangement. Use a list to rep Your dictionary should have 3 keys — `A`, `B`, and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C"] len(my_graph) == 3 and all(key in my_graph for key in key_list) `)) @@ -26,7 +26,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["A"]` should have the `B` node as the value. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -35,7 +35,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -44,7 +44,7 @@ Your dictionary should have 3 keys — `A`, `B`, and `C`. The value of `my_graph["B"]` should be a list containing the other two nodes. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -53,7 +53,7 @@ The value of `my_graph["B"]` should be a list containing the other two nodes. The value of `my_graph["C"]` should be the connected node. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["C"] == "B" `)) }) diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md index 4c90d91dcf1..02430fe11f0 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md @@ -14,7 +14,7 @@ Add one last node, `D`, which is connected with `A` and `C`. Modify your diction Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -24,7 +24,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list `)) }) @@ -33,7 +33,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["A"]) == 2 and "B" in my_graph["A"] and "D" in my_graph["A"] `)) }) @@ -42,7 +42,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -51,7 +51,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["B"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -60,7 +60,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list `)) }) @@ -69,7 +69,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["C"]` should be a list containing `B` and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["C"]) == 2 and "B" in my_graph["C"] and "D" in my_graph["C"] `)) }) @@ -78,7 +78,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list `)) }) @@ -87,7 +87,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["D"]` should be a list containing `A` and `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["D"]) == 2 and "A" in my_graph["D"] and "C" in my_graph["D"] `)) }) diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md index 49fd52768f6..83afd0dd384 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md @@ -27,7 +27,7 @@ Modify `my_graph["A"]` into a list of tuples, considering the following distance Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -37,7 +37,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list and all(type(i) is tuple for i in my_graph["A"]) `)) }) @@ -46,7 +46,7 @@ Your dictionary should have 4 keys called `A`, `B`, `C`, and `D`. `my_graph["A"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 3), ("D", 1)] len(my_graph["A"]) == 2 and all(t in my_graph["A"] for t in tuples) `)) diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md index 15a7037ee11..177bcc40cc5 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md @@ -16,7 +16,7 @@ Declare an empty function called `shortest_path` and don't forget the `pass` key You should have a `shortest_path` function. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect inspect.isfunction(shortest_path) `)) diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md index f39af15f3c9..ea0e221644a 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md @@ -16,7 +16,7 @@ For that your function needs two parameters: `graph`, and `start`. Add them to y Your function should accept `graph` and `start` as the parameters, in this order. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == '(graph, start)' diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md index c276dba53cf..07a21ad9e43 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md @@ -22,7 +22,7 @@ Your function should take three parameters:`graph`, `start`, and `target`. The o The `target` parameter should have the default value of an empty string. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == "(graph, start, target='')" diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md index a8c2d5ce710..7de21aaa90b 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md @@ -14,7 +14,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list and all(type(i) is tuple for i in my_graph["B"]) `)) }) @@ -23,7 +23,7 @@ Now modify `my_graph["B"]` into a list of tuples. The `B-C` distance is `4`. `my_graph["B"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 3), ("C", 4)] len(my_graph["B"]) == 2 and all(t in my_graph["B"] for t in tuples) `)) diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md index 9bbfee6c6dd..d772abe6dcc 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md @@ -14,7 +14,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list and all(type(i) is tuple for i in my_graph["C"]) `)) }) @@ -23,7 +23,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["C"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 4), ("D", 7)] len(my_graph["C"]) == 2 and all(t in my_graph["C"] for t in tuples) `)) @@ -33,7 +33,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list and all(type(i) is tuple for i in my_graph["D"]) `)) }) @@ -42,7 +42,7 @@ In the same way, modify the remaining two lists considering that the `C-D` dista `my_graph["D"]` should be a list of tuples where the first item in the tuple is the connected node and the second item is the distance. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 1), ("C", 7)] len(my_graph["D"]) == 2 and all(t in my_graph["D"] for t in tuples) `)) diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md index 7865da12938..0bb25bb9d10 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md @@ -25,7 +25,7 @@ Now, you are going to test your function with another graph. Change `my_graph` i You should modify `my_graph` into the provided graph. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` g = { 'A': [('B', 5), ('C', 3), ('E', 11)], 'B': [('A', 5), ('C', 1), ('F', 2)], diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md index 83bf8f80d03..83b1c9f9d95 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md @@ -27,7 +27,7 @@ You should have a variable called `copper`. Your `copper` variable should have the value of an empty dictionary. Use a pair of curly braces for that. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {} `)) }) diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md index b86fd9f86d4..eb971641534 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md @@ -16,7 +16,7 @@ Add another key `age` to your dictionary and give it the integer number `2` as v You should add a new key-value pair to your `copper` dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 2 `)) }) @@ -25,7 +25,7 @@ You should add a new key-value pair to your `copper` dictionary. You should have an `age` key with the value `2` just after `'species': 'guinea pig'`, inside your `copper` dictionary. Don't forget the comma. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md index 88d29468440..5371fe5d90d 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md @@ -25,7 +25,7 @@ After your dictionary, follow the example above to access the `species` key of ` You should not modify your dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md index 497ed96f52b..dce469a2686 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md @@ -24,7 +24,7 @@ You should rename your `copper` dictionary into `my_graph`. Your `my_graph` variable should be a dictionary. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph) is dict `)) }) diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md index 060d468d5da..f82e5d56122 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md @@ -16,7 +16,7 @@ Your `merge_sort` function should take a single parameter: `array`. ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('merge_sort'))) == '(array)' + str(inspect.signature(merge_sort)) == '(array)' `)) }) ``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md index 2a137f7e7c8..65183b9da66 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md @@ -19,13 +19,9 @@ You should create an `if` statement to check if `len(array) <= 1`. Don't forget ```js ({ - test: () => { - const transformedCode = code.replace(/\r/g, ""); - const merge_sort = __helpers.python.getDef("\n" + transformedCode, "merge_sort"); - const { function_body } = merge_sort; - - assert.match(function_body, /if\s+len\(\s*array\s*\)\s*<=\s*1:\s*pass/); - } + test: () => assert(runPython(` + _Node(_code).find_function("merge_sort").find_ifs()[0].find_conditions()[0].is_equivalent("len(array) <= 1") + `)) }) ``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md index 30162d71e0f..31a27a2fe87 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md @@ -22,13 +22,11 @@ Use the `pass` keyword in the body of the `if` statement. Your `if` statement should check if `__name__` has a value of `'__main__'` ```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:/); -``` - -You should have the `pass` keyword in the body of your `if` statement - -```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:\s*[^}]*\bpass\b/); +({ + test: () => assert(runPython(` + _Node(_code).find_ifs()[0].find_conditions()[0].is_equivalent("__name__ == '__main__'") + `)) +}) ``` # --seed-- diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md index c12b26a94e2..42d509411a8 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md @@ -25,7 +25,6 @@ Your `rods` variable should be an empty dictionary. ```js ({ test: () => assert(runPython(` - rods = __locals.get("rods") rods == {} `)) }) diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md index a8e411b8a35..8766d6b1b46 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md @@ -19,8 +19,7 @@ You should use the `range()` function to assign a sequence of numbers to `rods[' ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - type(a['A']) is range + type(rods['A']) is range `)) }) ``` @@ -29,8 +28,7 @@ You should use the `range()` function to assign the sequence of numbers from `3` ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == range(3, 0, -1) + rods['A'] == range(3, 0, -1) `)) }) ``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md index 3e96834a508..eb069a73b56 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md @@ -17,8 +17,7 @@ You should pass your `range()` call to the `list()` function. ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == list(range(3, 0, -1)) + rods['A'] == list(range(3, 0, -1)) `)) }) ``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md index 75f71373e82..6a00332f957 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md @@ -23,7 +23,7 @@ You should declare an empty function named `move`. Remember to use the `pass` ke ({ test: () => { assert(runPython(` import inspect - inspect.isfunction(__locals.get('move')) + inspect.isfunction(move) `)) } }) diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md index 609e509a4c6..5fdcd41ed17 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md @@ -23,9 +23,8 @@ The value of `number_of_moves` should be the expression to calculate the number ```js ({ test: () => { - assert(runPython(` - a = __locals.get('NUMBER_OF_DISKS') - __locals.get('number_of_moves') == 2**a -1 + assert(runPython(` + number_of_moves == 2**NUMBER_OF_DISKS -1 `)) } }) ``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md index 65aa43a95f3..b29cd11ba3f 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md @@ -16,7 +16,7 @@ You should declare an empty function named `make_allowed_move`. Remember to use ```js ({ test: () => assert(runPython(` import inspect - inspect.isfunction(__locals.get('make_allowed_move')) + inspect.isfunction(make_allowed_move) `)) }) ``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md index 194037624c3..3fcc9aabc2a 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md @@ -16,7 +16,7 @@ Your `make_allowed_move()` function should have two parameters named `rod1` and ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('make_allowed_move'))) == '(rod1, rod2)' + str(inspect.signature(make_allowed_move)) == '(rod1, rod2)' `)) }) ``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md index 910a0b56033..e7ce6b006e1 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md @@ -14,16 +14,14 @@ The `rods` dictionary will represent the three rods with their disks. Give it th Your `rods` dictionary should have an `'A'` key. ```js -({ test: () => assert(runPython(`'A' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'A' in rods`)) }) ``` `rods['A']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['A'] == [] + rods['A'] == [] `)) }) ``` @@ -31,16 +29,14 @@ Your `rods` dictionary should have an `'A'` key. Your `rods` dictionary should have a `'B'` key. ```js -({ test: () => assert(runPython(`'B' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'B' in rods`)) }) ``` `rods['B']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['B'] == [] + rods['B'] == [] `)) }) ``` @@ -48,16 +44,14 @@ Your `rods` dictionary should have a `'B'` key. Your `rods` dictionary should have a `'C'` key. ```js -({ test: () => assert(runPython(`'C' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'C' in rods`)) }) ``` `rods['C']` should be an empty list. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['C'] == [] + rods['C'] == [] `)) }) ``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md index 529cfb4368e..87138576c33 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md @@ -22,7 +22,7 @@ Your `move()` function should have `n`, `source`, `auxiliary`, and `target` as t ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('move'))) == '(n, source, auxiliary, target)' + str(inspect.signature(move)) == '(n, source, auxiliary, target)' `)) }) ``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md index f46e57b4b48..00f3174a541 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md @@ -17,9 +17,8 @@ You should reduce the indentation level of all the code after the `return` state ```js ({ test: () => assert(runPython(` - hanoi = __locals.get("move") a, b, c = [3, 2, 1], [], [] - hanoi(3, a, b, c) + move(3, a, b, c) a == [] and b == [] and c == [3, 2, 1] `)) }) diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md index 16e7b5b68ed..00efcbb8726 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md @@ -23,9 +23,8 @@ You should add `direction` as the third parameter of your function. ```js ({ test: () => assert(runPython(` - import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + import inspect + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction)' `)) }) diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md index 74562ae26a5..d19dc6dbe27 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md @@ -24,8 +24,7 @@ You should declare a new function called `encrypt`. Remember to use the `pass` k ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - inspect.isfunction(f) + inspect.isfunction(encrypt) `)) }) ``` @@ -35,8 +34,7 @@ Your `encrypt` function should take `message` and `key` as the parameters. The o ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - sig = inspect.signature(f) + sig = inspect.signature(encrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md index fa091717efb..b7357c63760 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md @@ -16,8 +16,7 @@ You should define a new function called `decrypt`. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - inspect.isfunction(f) + inspect.isfunction(decrypt) `)) }) ``` @@ -27,8 +26,7 @@ Your `decrypt` function should take `message` and `key` as the parameters. ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - sig = inspect.signature(f) + sig = inspect.signature(decrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md index 19fcb7ee6a3..f719d77790e 100644 --- a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md @@ -23,8 +23,7 @@ The `direction` parameter of your `vigenere` function should have a default valu ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction=1)' `)) }) diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md new file mode 100644 index 00000000000..733f024fa29 --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md @@ -0,0 +1,39 @@ +--- +id: 65ef181dad3d96b14a21a03e +title: Step 1 +challengeType: 20 +dashedName: step-1 +--- + +# --description-- + +In this project, you will find the approximate square root of a given number using the bisection method. + +The bisection method is a technique for finding the roots of a real-valued function. It works by narrowing down an interval where the square root lies until it converges to a value within a specified tolerance. + +Begin by creating a function named `square_root_bisection`. Leave the parameters empty for now. + +# --hints-- + +You should define the function `square_root_bisection` with no parameters. + +```js +({ + test: () => { + assert(runPython(` + import inspect + inspect.isfunction(square_root_bisection) + `)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md new file mode 100644 index 00000000000..f5091e5a2c6 --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md @@ -0,0 +1,38 @@ +--- +id: 65ef190c6b51e9b5a5f7ed29 +title: Step 2 +challengeType: 20 +dashedName: step-2 +--- + +# --description-- + +Give the `square_root_bisection` method the following parameters: + +- `square_target`: The number for which you want to find the square root. +- `tolerance` (optional): The acceptable difference between the square of the approximate root value and the actual target value (default is `1e-7`). The tolerance `1e-7` implies that the solution will be accurate to within `0.0000001` of the true value and is a good default choice that balances accuracy and performance. +- `max_iterations` (optional): The maximum number of iterations to perform (default is `100`). If the method doesn't converge within this limit, you'll assume the solution is not found. + +# --hints-- + +Your function should have these parameters: `square_target`, `tolerance = 1e-7`, and `max_iterations = 100`. The order matters. + +```js +({ + test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").has_args("square_target, tolerance=1e-7, max_iterations=100")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py + +--fcc-editable-region-- +def square_root_bisection(): + pass +--fcc-editable-region-- + +``` + diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md new file mode 100644 index 00000000000..77628582774 --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md @@ -0,0 +1,46 @@ +--- +id: 65ef19425d1b27b6c930bae6 +title: Step 3 +challengeType: 20 +dashedName: step-3 +--- + +# --description-- + +If the number for which you want to find the square root is negative, the code should raise an error as the square root of a negative number is not defined in real numbers. + +Remove the `pass` statement and create an `if` statement to check if `square_target` is less than `0`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").has_pass()`)) + } +}) +``` + +You should create an `if` statement to check if `square_target < 0`. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_if("square_target < 0").is_empty()`)) + + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance = 1e-7, max_iterations = 100): + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md new file mode 100644 index 00000000000..20f407dfd2a --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md @@ -0,0 +1,46 @@ +--- +id: 65ef198fde24dfb7ff675b42 +title: Step 4 +challengeType: 20 +dashedName: step-4 +--- + +# --description-- + +If the `square_target` is less than `0`, raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'`. Don't forget to remove the `pass` keyword. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'` inside the `if` body. + +```js +({ + test: () => { + + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].is_equivalent("raise ValueError('Square root of negative number is not defined in real numbers')")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md new file mode 100644 index 00000000000..f31f83a0ed3 --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md @@ -0,0 +1,38 @@ +--- +id: 65ef19ec318e2fb9066381e3 +title: Step 5 +challengeType: 20 +dashedName: step-5 +--- + +# --description-- + +You'll create separate cases for when `square_target` is `0` or `1`. + +Begin by creating an `if` statement to check if `square_target` is equal to `1`. + +# --hints-- + +You should create an `if` statement to check that `square_target == 1`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[0].is_equivalent("square_target == 1")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md new file mode 100644 index 00000000000..927a215705a --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md @@ -0,0 +1,51 @@ +--- +id: 65ef1a1fcb527bba0ca82ccf +title: Step 6 +challengeType: 20 +dashedName: step-6 +--- + +# --description-- + +If the `square_target` is equal to `1`, declare a variable `root` and assign it the value `1` . Also, print the message `'The square root of {square_target} is 1'`. Remember to format the message using an f-string. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should assign the value `1` to the `root` variable and print the message `'The square root of {square_target} is 1'` inside the `if` body. + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].is_equivalent("root = 1\\nprint(f'The square root of {square_target} is 1')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md new file mode 100644 index 00000000000..9ba5f5b573f --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md @@ -0,0 +1,55 @@ +--- +id: 65ef1a50049cf9bada13266f +title: Step 7 +challengeType: 20 +dashedName: step-7 +--- + +# --description-- + +Create an `elif` statement to check if `square_target` is equal to `0`. If it is, assign the value `0` to the `root` variable. Also, print the message `'The square root of {square_target} is 0'`. Remember to format the message using an f-string. + +# --hints-- + +You should have an `elif` statement to check the condition `square_target == 0`. + + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[1].is_equivalent("square_target == 0")`)); + } +}) + +``` + +You should assign the value `0` to the `root` variable and pass the argument `f'The square root of {square_target} is 0'` to a `print` call. + + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[1].is_equivalent("root = 0\\nprint(f'The square root of {square_target} is 0')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md new file mode 100644 index 00000000000..0fb10817783 --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md @@ -0,0 +1,45 @@ +--- +id: 65ef1a720d6e65bbb0d22463 +title: Step 8 +challengeType: 20 +dashedName: step-8 +--- + +# --description-- +Next, you are going to work on the cases where the `square_target` is a positive number apart from `1` or `0`. + +Create an `else` clause to handle these cases. + +# --hints-- + +Create an `else` clause and do not forget to add a `pass` keyword. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[2] == _Node()`)) + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md new file mode 100644 index 00000000000..8f10c9990f1 --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md @@ -0,0 +1,73 @@ +--- +id: 65ef1aacca094bbcc2e2a3c8 +title: Step 9 +challengeType: 20 +dashedName: step-9 +--- + +# --description-- + +In Python, the `max()` function returns the largest of the input values. + +```python +max(1, 2, 3) # Output: 3 +``` + +The variables `low` and `high` will be used to define the initial interval where the square root lies. + +Inside the `else` clause, initialize the `low` variable to `0` and the `high` variable to be the maximum of either `1` or `square_target` as the square root of a number is always less than or equal to the number itself. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].has_pass()`)) + } +}) +``` + +You should declare a variable `low` and assign it `0`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("low").is_equivalent("low = 0")`)); } +}) + +``` + +You should declare a variable `high` and use the `max()` function to assign it the maximum value between `1` and `square_target`. + +```js + +({ test: () => assert(runPython(` +node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("high") +values = ["high = max(1, square_target)", "high = max(square_target, 1)"] +any(node.is_equivalent(val) for val in values) +`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md new file mode 100644 index 00000000000..6711973a758 --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md @@ -0,0 +1,46 @@ +--- +id: 65ef1afca9a8f6be0d4150ba +title: Step 10 +challengeType: 20 +dashedName: step-10 +--- + +# --description-- + +Set the value of `root` to `None` as at this point, you don't have an approximate value yet. + +# --hints-- + +The value of `root` should be `None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].is_equivalent("low = 0\\nhigh = max(1, square_target)\\nroot = None")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + low = 0 + high = max(1, square_target) + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md new file mode 100644 index 00000000000..69406d9fee2 --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md @@ -0,0 +1,51 @@ +--- +id: 65ef1be2b958cabf712296cd +title: Step 11 +challengeType: 20 +dashedName: step-11 +--- + +# --description-- + +Now you'll repeatedly narrow down the interval by finding the midpoint of the current interval and comparing the square of the midpoint with the target value. + +For that, inside the `else` block, create a `for` loop that runs up to `max_iterations` times. + +# --hints-- + +You should create a `for` loop to iterate over `range(max_iterations)`. Use `_` as the loop variable. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].is_equivalent("for _ in range(max_iterations):\\n pass")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md new file mode 100644 index 00000000000..e5efb88bafc --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md @@ -0,0 +1,78 @@ +--- +id: 65ef1c0a03fcabc04ded7e69 +title: Step 12 +challengeType: 20 +dashedName: step-12 +--- + +# --description-- + +Inside the for loop, calculate the midpoint of the interval ranging from `low` to `high`. Assign this value to a variable `mid`. + +Also, calculate the square of the midpoint (`mid`) and store it in the variable `square_mid`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].has_pass()`)) + + } + +}) + +``` + +You should declare a variable `mid` and assign it `(low + high) / 2` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(` + node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("mid") + values = ["mid = (low + high) / 2", "mid = (high + low) / 2"] + any(node.is_equivalent(val) for val in values) + `)) + + } + +}) +``` + +You should declare a variable `square_mid` and assign it `mid**2` inside the body of the for loop. + +```js +({ test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("square_mid").is_equivalent("square_mid = mid**2")`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md new file mode 100644 index 00000000000..f365f00475d --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md @@ -0,0 +1,53 @@ +--- +id: 65ef1c34a541afc12dbb849d +title: Step 13 +challengeType: 20 +dashedName: step-13 +--- + +# --description-- + +The `abs()` function returns the absolute value of a number, which is always positive, regardless of the number sign. You will use it to check that the estimated square root is close enough to the actual value. + +Now, create an `if` statement to check if the absolute value of the difference between `square_mid` and `square_target` is within the specified `tolerance`. + +# --hints-- + +You should have an `if` statement with the condition `abs(square_mid - square_target) < tolerance:` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[0].is_equivalent("abs(square_mid - square_target) < tolerance")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md new file mode 100644 index 00000000000..7c84ec9d7fe --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md @@ -0,0 +1,68 @@ +--- +id: 65ef1cb031de30c2cde64c12 +title: Step 14 +challengeType: 20 +dashedName: step-14 +--- + +# --description-- + +If the difference is within the specified `tolerance`, set the value of `root` to `mid` and break out of the loop. + +# --hints-- + +You should remove the existing `pass` statement. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].has_pass()`)) + } + +}) + +``` + +You should assign the value of `mid` to `root` and break out of the loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].is_equivalent("root = mid\\nbreak")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md new file mode 100644 index 00000000000..18a6767deab --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md @@ -0,0 +1,71 @@ +--- +id: 65ef1cda150a59c3b8306944 +title: Step 15 +challengeType: 20 +dashedName: step-15 +--- + +# --description-- + +If the difference is not within the specified `tolerance`, create an `elif` statement to check if `square_mid` is less than `square_target`. + +Assign the value of `mid` to `low` as the square root would now lie between `low` and `mid`. + +# --hints-- + +You should create an `elif` statement that checks if `square_mid < square_target`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[1].is_equivalent("square_mid < square_target")`)) + + } + +}) +``` + +You should assign the value of `mid` to `low`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[1].is_equivalent("low = mid")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md new file mode 100644 index 00000000000..06598491f2e --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md @@ -0,0 +1,70 @@ +--- +id: 65ef1d104c2be9c4d8e22075 +title: Step 16 +challengeType: 20 +dashedName: step-16 +--- + +# --description-- + +If both the `if` and `elif` conditions are not met, the value of `mid` would be greater than `square_target`. In this case, create an `else` clause and assign the value of `mid` to `high`. + +# --hints-- + +You should have an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[2]== _Node()`)); + } +}) + +``` + +You should assign the value of `mid` to `high` in the `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[2].is_equivalent("high = mid")`)); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- + elif square_mid < square_target: + low = mid + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md new file mode 100644 index 00000000000..45e3e9987a8 --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md @@ -0,0 +1,76 @@ +--- +id: 65ef1d5e3d2927c5e0f4997b +title: Step 17 +challengeType: 20 +dashedName: step-17 +--- + +# --description-- + +Outside the for loop, create an `if` statement to check if the value of `root` is still `None`. If it is, print the message `'Failed to converge within {max_iterations} iterations.'`. Remember to format the message using an f-string. + +# --hints-- + +You should create an `if` statement that checks if `root is None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[0].is_equivalent("root is None")`)); + + } +}) +``` + +You should pass the argument `f'Failed to converge within {max_iterations} iterations.'` to the `print` function. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].is_equivalent("if root is None:\\n print(f'Failed to converge within {max_iterations} iterations.')")`)); + + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md new file mode 100644 index 00000000000..ffe75554dd8 --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md @@ -0,0 +1,77 @@ +--- +id: 65ef1d924ff2e5c7031c6ce8 +title: Step 18 +challengeType: 20 +dashedName: step-18 +--- + +# --description-- + +Create an `else` clause to handle the case where the value of `root` is not `None`, indicating that a root hass been found. If it is not `None`, print the message `'The square root of {square_target} is approximately {root}'`. Remember to format using an f-string. + +# --hints-- + +You should create an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[1] == _Node()`)); + } +}) + +``` + +You should print `f'The square root of {square_target} is approximately {root}'` within the `else` body. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_bodies()[1].is_equivalent("print(f'The square root of {square_target} is approximately {root}')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md new file mode 100644 index 00000000000..1a2bb01cf56 --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md @@ -0,0 +1,68 @@ +--- +id: 65ef1dd722f6e7c8294eeec4 +title: Step 19 +challengeType: 20 +dashedName: step-19 +--- + +# --description-- + +Finally, return the value of `root` from the `square_root_bisection` function. + +# --hints-- + +You should return `root` at the end of the function. + +```js +({ + test: () => + { + const pyClassStr = runPython(`str(_Node(_code).find_function("square_root_bisection"))`); + assert.match(pyClassStr, /return\s*root/) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md new file mode 100644 index 00000000000..7904b9bceab --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md @@ -0,0 +1,70 @@ +--- +id: 65ef1e10268f8ec9121446d1 +title: Step 20 +challengeType: 20 +dashedName: step-20 +--- + +# --description-- + +Outside the function definiton, create a variable `N` and assign the value of `16` to it. + +# --hints-- + +You should have the variable `N = 16` outside the function definition. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_variable("N").is_equivalent("N = 16")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md new file mode 100644 index 00000000000..71da1b62c03 --- /dev/null +++ b/curriculum/challenges/swahili/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md @@ -0,0 +1,115 @@ +--- +id: 65ef1eac497754cafa12a26c +title: Step 21 +challengeType: 20 +dashedName: step-21 +--- + +# --description-- + +Call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +Experiment with larger values. + +With this, you have successfully implemented the bisection method to find the square root of a number. + +# --hints-- + +You should call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +```js +({ + test: () => assert(runPython(`_Node(_code).has_call("square_root_bisection(N)")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- +N = 16 + +--fcc-editable-region-- + +``` + +# --solutions-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +N = 16 +square_root_bisection(N) +``` diff --git a/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md b/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md index 080988a0252..fbfdaf026dd 100644 --- a/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md +++ b/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md @@ -7,7 +7,7 @@ dashedName: step-8 # --description-- -Ili kuona kipengele cha `cat-head`, kipe usuli wa linear gradient wa `#5e5e5e` kwa `85%` na `#45454f` kwa `100%`. +To see the `.cat-head` element, give it a linear gradient background with `#5e5e5e` at `85%` and `#45454f` at `100%`. Huenda usione tofauti kati ya rangi hizi mbili, lakini zipo. diff --git a/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md b/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md index 39cd28d3926..1a93df2a18a 100644 --- a/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md +++ b/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md @@ -11,7 +11,7 @@ Ndani ya kipengele chako cha `.cat-ears`, unda vipengele viwili vya `div` ukitum # --hints-- -Hupaswi kubadilisha kipengele kilichopo cha `div` kilicho na darasa la `cat-ears`. +You should not change the existing `div` element with the class `cat-ears`. ```js assert(document.querySelectorAll('div.cat-ears').length === 1); diff --git a/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md b/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md index fc5da875eae..8231298a995 100644 --- a/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md +++ b/curriculum/challenges/swahili/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md @@ -11,7 +11,7 @@ Thamani ya nafasi ya mwisho ni `sticky`. Nafasi ya `sticky` ni mseto wa nafasi z Badilisha thamani ya sifa ya `position` ya `.cat-head` hadi `sticky`, weka `top` hadi `0`, kisha uondoe `left` na thamani yake. -**Kumbuka**: Ili kuona jinsi `sticky` inavyofanya kazi, inabidi uweke maandishi kadhaa kabla na baada ya kipengele chako cha `.cat-head` `div`. Ukisogeza juu baada ya hapo, utaona kwamba `.cat-head` inakwama juu na kubaki hapo. +**Kumbuka**: Ili kuona jinsi `sticky` inavyofanya kazi, inabidi uweke maandishi kadhaa kabla na baada ya kipengele chako cha `.cat-head` `div`. If you scroll down after that, you'll see that the `.cat-head` gets stuck to the top and remains there. # --hints-- diff --git a/curriculum/challenges/swahili/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md b/curriculum/challenges/swahili/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md index 0f93285cb97..5f212983dbc 100644 --- a/curriculum/challenges/swahili/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md +++ b/curriculum/challenges/swahili/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md @@ -61,7 +61,7 @@ while (continueLoop) { --fcc-editable-region-- --fcc-editable-region-- -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/swahili/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md b/curriculum/challenges/swahili/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md index bf40abef119..3f935935d65 100644 --- a/curriculum/challenges/swahili/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md +++ b/curriculum/challenges/swahili/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md @@ -44,7 +44,7 @@ let done = 0; while (continueLoop) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/swahili/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md b/curriculum/challenges/swahili/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md index 9c976287a58..38f1716a030 100644 --- a/curriculum/challenges/swahili/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md +++ b/curriculum/challenges/swahili/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md @@ -48,7 +48,7 @@ let done = 0; while (done !== count) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/swahili/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md b/curriculum/challenges/swahili/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md index b6ba08ebcf5..228a945faf0 100644 --- a/curriculum/challenges/swahili/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md +++ b/curriculum/challenges/swahili/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md @@ -23,15 +23,7 @@ Test value of `__name__` ```js ({ - test: () => assert(__pyodide.runPython(`__name__ == '__main__'`)) -}) -``` - -Test __locals and __pyodide - -```js -({ - test: () => assert(__pyodide.runPython(`__locals.get('add')(4,5) == 9`)) + test: () => assert(runPython(`__name__ == '__main__'`)) }) ``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md index d2139487de3..de4fa3e7ee3 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md @@ -1,6 +1,5 @@ --- id: 658111239f39a01c8f095c44 -videoId: nLDychdBwUg title: "Dialogue 1: What Motivates the Team?" challengeType: 21 dashedName: dialogue-1-what-motivates-the-team @@ -13,3 +12,275 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Maria", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.5, + "dialogue": { + "text": "Hey Maria, I have a question… Do you know what motivates the team?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 4.9, + "finishTime": 7.4, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 8.7, + "finishTime": 12.3, + "dialogue": { + "text": "Hi Brian! Well, one thing that really motivates me is learning new things.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 12.7, + "finishTime": 16, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 16.5, + "finishTime": 18.2, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 19.7, + "finishTime": 20.9, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 21.3, + "finishTime": 24.7, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 25, + "finishTime": 27.2, + "dialogue": { + "text": "But you know what demotivates me sometimes?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 27.7, + "finishTime": 32.6, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 33.1, + "finishTime": 37.3, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 37.7, + "finishTime": 39.7, + "dialogue": { + "text": "Well, collaborating with our creative team", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 39.7, + "finishTime": 42.5, + "dialogue": { + "text": "and brainstorming many ideas really inspires me.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 42.8, + "finishTime": 44.6, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 45.5, + "finishTime": 49, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 49.3, + "finishTime": 53.6, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 54, + "finishTime": 55.5, + "dialogue": { + "text": "It is really frustrating.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 56.5, + "finishTime": 58.4, + "dialogue": { + "text": "Yeah, technical glitches are complicated", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 58.4, + "finishTime": 61, + "dialogue": { + "text": "and there's not much we can do other than try to solve them.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 62, + "finishTime": 63.3, + "dialogue": { + "text": "But do you know what else is great?", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 63.7, + "finishTime": 66.7, + "dialogue": { + "text": "Seeing the team's enthusiasm after solving these issues.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 67.1, + "finishTime": 69.8, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 71.3, + "finishTime": 75.4, + "dialogue": { + "text": "Yeah. Wow. You know what? This was really a motivating talk.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 75.7, + "finishTime": 77.1, + "dialogue": { + "text": "Thanks for sharing your thoughts.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 77.7, + "finishTime": 79.8, + "dialogue": { + "text": "Anytime. It's good to have these discussions.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 80, + "finishTime": 81.6, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "right" + } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 82.1 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 82.6 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md index 5eb9cbab87f..bd40d89ce39 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-6 --- - + # --description-- @@ -18,7 +15,7 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ## --sentence-- -`Well, one thing that really motivates me is _ new things.` +`Hi, Brian. Well, one thing that really motivates me is _ new things.` ## --blanks-- @@ -27,3 +24,47 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ### --feedback-- This word is a gerund, the `-ing` form of the verb used as a noun, indicating the action or process of gaining knowledge. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md index 57d5a2b1a4d..279e2861a88 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-5 --- - + # --description-- @@ -20,7 +17,7 @@ When you add an `s` at the end of a word, like `things`, it means you are talkin ## --sentence-- -`Hi Brian! _, one _ that really motivates me _ learning new _.` +`Hi, Brian! _, one _ that really motivates me _ learning new _.` ## --blanks-- @@ -53,3 +50,47 @@ This is the verb `to be` conjugated in the third person singular. ### --feedback-- Maria uses this word to talk about more than one item or idea she likes to learn. It is the plural form of `thing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md index eee61930dcc..3ecb0ccb702 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-7 --- - + # --description-- @@ -51,3 +48,47 @@ learning new things ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md index 053ae896f0b..80d98bbbc33 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-8 --- - + # --description-- @@ -37,3 +34,47 @@ This word is a gerund describing the activity Maria enjoys related to discoverin ### --feedback-- Another gerund that follows `and`, indicating another activity Maria enjoys, which is about getting better at something. It also ends in `-ing` and serves as a noun. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 15.04 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.28, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.78 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md index fbe4dcc505d..cfa8469782b 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-10 --- - + # --description-- @@ -26,7 +23,7 @@ In `I love exploring many new technologies`, how is `exploring` used? ## --answers-- -As a present continuous +As a verb in the present continuous structure ### --feedback-- @@ -34,7 +31,7 @@ Present continuous are for actions happening now. This is not showing an action --- -As a simple present verb +As a verb in the simple present structure ### --feedback-- @@ -42,11 +39,11 @@ Simple present verbs don't end in `-ing`. --- -As a gerund +As a verb in the gerund form --- -As a past participle +As a verb in the past participle form ### --feedback-- @@ -55,3 +52,47 @@ Past participles are for perfect tenses or as adjectives. This is not used like ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 6.50, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills. It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 7.00 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md index 80690caccd2..252cf48c05b 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-18 --- - + # --description-- @@ -31,3 +28,47 @@ Adding a prefix to a word can change its meaning. ### --feedback-- Maria uses an adjective ending in `-ing` to describe a feeling that is the opposite of `motivating`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 32.22, + "finishTimestamp": 36.08 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.86, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.36 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md index 9001228085f..2ea50eff48d 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-11 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to the audio and complete the sentence. ### --feedback-- This word is used when someone listens to what another person says. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 19.86 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 2.68 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md index f00bebea879..042955730aa 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-12 --- - + # --description-- @@ -49,3 +46,47 @@ This word means to develop or become bigger or more advanced. It ends with `-ing ### --feedback-- This word is related to work or a career. It describes doing something in a way that shows good skills and behavior at a job. it ends with `-ly` + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 20.28, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md index 885332a3dfc..008035b84e7 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-13 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on how skill improvement fits into overall personal and professional dev ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.98, + "dialogue": { + "text": "That's great to hear, Maria. Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.48 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md index a99fd602832..e087041f3d9 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-14 --- - + # --description-- @@ -53,3 +50,65 @@ He's adding to the conversation, not changing the topic. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 26.26 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 2.60, + "finishTime": 5.64, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot,", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 6.02, + "finishTime": 8.58, + "dialogue": { + "text": "but you know what demotivates me sometimes?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 9.08 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md index 0bcef38811f..ed340f1a31c 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md @@ -28,4 +28,48 @@ Listen to the audio and complete the sentence. ### --feedback-- -This word means feeling very happy and eager. +This word means feeling very happy and eager. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 15.32, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.94, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.44 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md index b425e084763..cf6dcc31710 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-16 --- - + # --description-- @@ -55,3 +52,47 @@ This phrase means having plenty of time, which is different from what Brian mean ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md index b5708ac00fe..8de15f47d1c 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-17 --- - + # --description-- @@ -47,3 +44,47 @@ This word is a preposition used to compare or illustrate a similarity to somethi ### --feedback-- It means you are doing something quickly because you do not have much time. It ends with `-ing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md index 5293029060e..f74bac67a8c 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-20 --- + + # --description-- The word `brainstorming` refers to a group discussion to produce ideas and solve problems. @@ -46,3 +48,47 @@ It means adhering to specific instructions, which is not the same as the word. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md index ea82aef1538..1b4aea4a2b1 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-28 --- - + # --description-- @@ -18,7 +15,7 @@ The phrase `slow down` means to decrease in speed or reduce the rate of progress ## --sentence-- -`The problem is encountering many technical issues that make our progress _ _.` +`The problem is encountering many technical issues that _ our progress _.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to describe a decrease in speed or pace. ### --feedback-- This adverb complements the phrase to indicate a reduction or decrease in intensity, speed, or amount. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md index ed1c423927b..bd8c7fa6444 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-32 --- + + # --description-- The phrase `other than` indicates the presence of an alternative or different option. @@ -46,3 +48,47 @@ It means the singular or exclusive option, which is not the same as the phrase. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md index d2a4201ca63..9712d6a3279 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-35 --- - + # --description-- @@ -43,3 +40,47 @@ This possessive adjective is used to refer to something that belongs to the pers ### --feedback-- This noun refers to the reason or reasons one has for acting or behaving in a particular way. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 66.12, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 3.68, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.18 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md index 8f432d36f95..c5b54c0b913 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-38 --- - + # --description-- @@ -29,3 +26,47 @@ In the dialogue, Maria talks about the importance of discussions to help them re ### --feedback-- This verb is used to make someone think of something they might have forgotten. It brings something back into someone's mind. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 76.52, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.08, + "dialogue": { + "text": "Anytime. It's good to have these discussions. It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.58 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md index ba9e43efcb6..974459e9326 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-39 --- - + # --description-- @@ -43,3 +40,47 @@ This pronoun refers to the speaker and at least one other person, indicating a c ### --feedback-- This word is used in the context of continuing forward or persevering in a particular action or state. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 79.06, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.54, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.04 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md index 2f8c34f4dbf..c1b55b444af 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md @@ -1,6 +1,5 @@ --- id: 658160772584ba319849f910 -videoId: nLDychdBwUg title: "Dialogue 2: Asking How Someone Feels" challengeType: 21 dashedName: dialogue-2-asking-how-someone-feels @@ -13,3 +12,239 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Alice", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Tom", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Alice", + "startTime": 2, + "finishTime": 5.6, + "dialogue": { + "text": "Hi Tom, you look a bit down these days. Is everything okay?", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 6.3, + "finishTime": 9.5, + "dialogue": { + "text": "Hey Alice, yeah, I feel a bit demotivated.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 9.8, + "finishTime": 13.6, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 13.8, + "finishTime": 16.7, + "dialogue": { + "text": "It's exhausting, and it feels like I'm constantly running", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 16.7, + "finishTime": 18.1, + "dialogue": { + "text": "without knowing where I'm going.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 18.9, + "finishTime": 22.7, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 23.4, + "finishTime": 25.7, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 26.2, + "finishTime": 28.8, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 28.8, + "finishTime": 30.6, + "dialogue": { + "text": "instead of working together as a team.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 31.3, + "finishTime": 34.7, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 35, + "finishTime": 38.4, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 38.9, + "finishTime": 41.7, + "dialogue": { + "text": "Sometimes, it feels like we're meeting for no reason,", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 41.7, + "finishTime": 44.3, + "dialogue": { + "text": "and it's hard to find time to actually work on projects.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 45, + "finishTime": 48.4, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 49, + "finishTime": 52.6, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 52.6, + "finishTime": 56.6, + "dialogue": { + "text": "without any variation. It feels like I'm wasting my skills and creativity.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 57.06, + "finishTime": 59, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 59.6, + "finishTime": 62.8, + "dialogue": { + "text": "Repeating the same tasks over and over can be demotivating.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 63.2, + "finishTime": 66.4, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 66.8, + "finishTime": 69.4, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation,", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 69.4, + "finishTime": 71.3, + "dialogue": { + "text": "and it's good to share and support each other.", + "align": "left" + } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 71.8 + }, + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 72.3 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md index b8674840c93..9a3003405af 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-40 --- - + # --description-- @@ -22,7 +19,7 @@ In this conversation, Alice notices something about Tom's mood and asks if he's ## --sentence-- -`Hi Tom, you look a bit _ _ days. Is everything okay?` +`Hi, Tom. You look a bit _ _ days. Is everything okay?` ## --blanks-- @@ -39,3 +36,47 @@ This word is used to describe feeling sad or unhappy. It's like when you're not ### --feedback-- This word is used with `days` to talk about the current time or the recent period. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 0.98, + "finishTimestamp": 4.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.60, + "dialogue": { + "text": "Hi, Tom. You look a bit down these days. Is everything okay?", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.10 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md index 8fe09a43d89..fdd78d7f84d 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-41 --- - + # --description-- @@ -20,7 +17,7 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ## --sentence-- -`Hey Alice, yeah, I feel a bit _.` +`Hey, Alice. Yeah, I feel a bit _.` ## --blanks-- @@ -29,3 +26,47 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ### --feedback-- This word is used to describe how Tom feels. It ends with `ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 8.48 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md index a8f6062add9..e30ea2d793a 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-42 --- - + # --description-- @@ -46,8 +43,52 @@ This word means `lacking` or `not having` something. --- -`break` +`breaks` ### --feedback-- -This word refers to a short period of rest or pause from work or activity. +This word refers to a short period of rest or pause from work or activity. Use the plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 8.84, + "finishTimestamp": 12.60 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.76, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.26 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md index 90185d888a6..b19719a1211 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-43 --- - + # --description-- @@ -45,3 +42,47 @@ This word means something is happening all the time or very often. ### --feedback-- This word is used to indicate the absence of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 12.82, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 5.30, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.80 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md index b6f27b9c9b9..524c4be5635 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-44 --- - + # --description-- @@ -18,7 +15,7 @@ Tom talks about what's making him feel demotivated. Let's figure out what is bot ## --text-- -What is making Tom feel demotivated and why? +What is making Tom feel demotivated? ## --answers-- @@ -51,3 +48,65 @@ Reflect on Tom's words about his work routine and how it makes him feel. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.54, + "finishTime": 8.3, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 8.52, + "finishTime": 12.82, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 13.32 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md index 23f853581be..b084d8c5f2d 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-45 --- - + # --description-- @@ -51,3 +48,47 @@ She understands how Tom feels ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 18.98 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 2.28, + "dialogue": { + "text": "I totally get that, Tom.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 2.78 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md index 95b626db8ab..18b3ede5a71 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-46 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working more hours than what is normally required, often beyond ### --feedback-- This word describes something that makes you feel very tired, like it's taking all your energy away. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 21.72 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.02, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.52 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md index 8e581dc301d..143b260cab0 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-47 --- - + # --description-- @@ -35,3 +32,47 @@ This word means managing or handling, especially when the situation is challengi ### --feedback-- This word, in the context of the office, refers to the social and power dynamics among coworkers and within the workplace environment. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 24.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.52, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.02 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md index ffd2e2364d2..5c132f9bd9c 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-48 --- - + # --description-- @@ -45,3 +42,47 @@ This word means making an effort to do something, often something challenging. ### --feedback-- This word is about doing tasks, especially with others to achieve a common goal or finish a project. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 25.02, + "finishTimestamp": 29.38 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.36, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.86 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md index eed7315d9fd..1c59d0c36f8 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-49 --- - + # --description-- @@ -51,3 +48,65 @@ Reflect on the specific aspect of work that Alice mentions she hates dealing wit ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 29.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.9, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 5.64, + "finishTime": 7.96, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 8.4, + "finishTime": 12.88, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 13.38 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md index 008029728ad..89639635494 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-50 --- - + # --description-- @@ -22,11 +19,11 @@ Tom is agreeing with Alice about a specific aspect of work that they find unplea ## --blanks-- -`dealing` +`Dealing` ### --feedback-- -This word means managing or handling something, often implying that it's not an easy or enjoyable task. +This word means managing or handling something, often implying that it's not an easy or enjoyable task. Don't forget the capitalization. --- @@ -35,3 +32,47 @@ This word means managing or handling something, often implying that it's not an ### --feedback-- In the context of an office, this word refers to the social and power dynamics among coworkers. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 30.08, + "finishTimestamp": 33.46 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md index 33c828a005d..eb1ae62b875 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-51 --- - + # --description-- @@ -45,3 +42,47 @@ This word is part of a expression that means something is making Tom upset or an ### --feedback-- This word is used when you're talking about experiencing something, like when you have a lot of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md index f182b582c7f..9e516b17b69 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-52 --- - + # --description-- @@ -51,3 +48,47 @@ He wishes for even more meetings ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md index 43b8ae258c9..f457d5cb4c2 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-53 --- - + # --description-- -Listen to the audio and answer the question. +Listen to the audio and fill in the blanks. # --fillInTheBlank-- @@ -51,3 +48,47 @@ This word means to discover or locate something. It's often used when you're loo ### --feedback-- This word is used to emphasize what is really true or happening. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md index e12e17d47ff..a0c2ef0d79a 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-54 --- - + # --description-- @@ -51,3 +48,47 @@ They take away time from working on projects ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md index 2bd6b036fb7..97dde90f3cb 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-55 --- - + # --description-- @@ -24,7 +21,7 @@ Alice: I hear you, Tom. Sitting in meetings for hours can be discouraging. ## --sentence-- -`_ in meetings for hours can be _.` +`I hear you, Tom. _ in meetings for hours can be _.` ## --blanks-- @@ -41,3 +38,47 @@ This word describes the action of being seated. It is capitalized. ### --feedback-- This word means something that makes you feel less confident or willing to continue. It ends in `ing`, showing it's describing the effect of the action. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md index da3c221a1f1..30aeb3ff460 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md @@ -5,12 +5,7 @@ challengeType: 19 dashedName: task-56 --- - + # --description-- @@ -53,3 +48,47 @@ Consider what Alice means by `discouraging` in the context of meetings. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md index c60324ba8d3..2957a5033ab 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-57 --- - + # --description-- @@ -43,3 +40,47 @@ This word is used to describe a large number of things grouped together. It's li ### --feedback-- This word refers to having different types or changes in something. It's the opposite of doing the same thing over and over. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 52.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 6.02, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.52 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md index 63d0a5a5643..cf49c33b69a 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-58 --- - + # --description-- @@ -35,3 +32,47 @@ This word means not using something valuable in a good or effective way. It's li ### --feedback-- This word refers to the ability to make new things or think of new ideas. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 53.24, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.34, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 3.84 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md index 540a3a77c0f..e189fc50af5 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-59 --- - + # --description-- @@ -51,3 +48,56 @@ Consider what Alice says directly annoys her versus how she feels about another ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md index ef09e4af19b..a5f87b483bd 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-60 --- - + # --description-- @@ -51,3 +48,56 @@ Think about whether meetings are mentioned in the context of wasting skills and ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md index fa7b1328561..7f182561d7f 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-61 --- - + # --description-- @@ -39,3 +36,47 @@ This auxiliary verb is used here to emphasize the verb that follows it, making t ### --feedback-- This adjective describes feelings of annoyance or irritation, often because of obstacles or difficulties. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 58.00 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.14, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 3.64 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md index e2e6ee3f118..d0f7a57efaa 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-62 --- - + # --description-- @@ -55,3 +52,47 @@ This word, when used twice with `and` in between, emphasizes the repetition of a ### --feedback-- This word describes something that reduces your desire or willingness to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 61.78 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "That does sound frustrating, Alice. Repeating the same tasks over and over can be demotivating.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md index 27d721f5a0a..bef09034af7 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-63 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to describe an emotional experience or sensation, in this case ### --feedback-- This word is the plural of `this`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md index 1721b02d9e4..c2eefbb7b7d 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-65 --- - + # --description-- @@ -51,3 +48,47 @@ For listening to him ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md index 80ad6cb9859..dc1a51e3b48 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-66 --- - + # --description-- @@ -51,3 +48,47 @@ This word means to tell others about your own experiences, thoughts, or feelings ### --feedback-- This word involves giving help or encouragement, showing you are there for someone. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md index 88359a9631c..ae0f2da0a0d 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-67 --- - + # --description-- @@ -51,3 +48,47 @@ The value of sharing feelings and supporting one another ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md index 01535bb27f7..e34ef923278 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-64 --- - + # --description-- @@ -44,3 +41,46 @@ This word is the middle part of the phrase used to casually introduce new inform This word completes the phrase, indicating a casual addition or shift in the conversation. +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md index abd512abbb8..fb7e5ccda2d 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md @@ -1,6 +1,5 @@ --- id: 65a351bd69b0b72d7ed24eb5 -videoId: nLDychdBwUg title: "Dialogue 3: Talking About Motivations to Pursue a Career" challengeType: 21 dashedName: dialogue-3-talking-about-motivations-to-pursue-a-career @@ -13,3 +12,212 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Lisa", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5, + "dialogue": { + "text": "Hey Lisa, what motivated you to choose a career in tech?", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 6, + "finishTime": 8.5, + "dialogue": { + "text": "One of my main motivations was the financial stability", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 8.8, + "finishTime": 10, + "dialogue": { + "text": "that tech jobs can provide.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 10.4, + "finishTime": 12.8, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 13.3, + "finishTime": 16.3, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 17.4, + "finishTime": 19.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 19.8, + "finishTime": 24, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 24, + "finishTime": 26, + "dialogue": { + "text": "and have different perspectives.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 26.8, + "finishTime": 29.2, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 29.2, + "finishTime": 32.1, + "dialogue": { + "text": "Another thing was the chance to be part of projects", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 32.1, + "finishTime": 34.2, + "dialogue": { + "text": "that push the limits of innovation and creativity.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 34.9, + "finishTime": 36, + "dialogue": { + "text": "I'm with you on that one.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 36.1, + "finishTime": 39.6, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 39.7, + "finishTime": 43.1, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 44.3, + "finishTime": 47.3, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 47.3, + "finishTime": 49.6, + "dialogue": { + "text": "and finding practical solutions is really thrilling.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 50.3, + "finishTime": 53, + "dialogue": { + "text": "Knowing that we solved problems is really exciting, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 53.4, + "finishTime": 56.7, + "dialogue": { + "text": "I hope we keep getting as much motivation from it as we can.", + "align": "left" + } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.2 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.7 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md index e165f760c08..23c160c642f 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-68 --- - + # --description-- @@ -18,7 +15,7 @@ Brian: Hey Lisa, what motivated you to choose a career in tech? ## --sentence-- -`Hey Lisa, what _ you to _ a career in tech?` +`Hey, Lisa, what _ you to _ a career in tech?` ## --blanks-- @@ -34,4 +31,48 @@ This word means something gave you a reason or desire to do something. It ends w ### --feedback-- -This verb is about making a decision between different options. +This verb is about making a decision between different options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md index 94e4ccd2b3e..3a96b95c93a 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-69 --- - + # --description-- @@ -51,3 +48,47 @@ What motivated her to pick a tech career ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md index 47d7700e414..9dc5f7bc32d 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-70 --- - + # --description-- @@ -37,3 +34,47 @@ The most important. ### --feedback-- Being steady, meaning you don't have to worry too much about it. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md index afed572b3be..22a27d6cb43 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-71 --- - + # --description-- @@ -35,3 +32,47 @@ This word is a past tense verb used to describe a state or condition in the past ### --feedback-- This verb means to give or supply something needed, like help, information, or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md index a5031402575..f006bbf44d1 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-72 --- - + # --description-- @@ -52,3 +48,71 @@ Reflect on Lisa's statement and whether travel is mentioned as a motivation. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.50 + }, + { + "character": "Lisa", + "opacity": 1, + "startTime": 5.50 + }, + { + "character": "Lisa", + "startTime": 5.82, + "finishTime": 10.02, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md index e71f55301a3..4b20a9bd448 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-73 --- - + # --description-- @@ -37,3 +34,47 @@ This verb means giving permission or making it possible to do something. this ve ### --feedback-- This noun describes the feeling of being certain about your abilities or something you're going to do. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 9.48, + "finishTimestamp": 11.90 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.42, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 3.92 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md index 4f8c68dfebb..ca8b0a42958 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-74 --- - + # --description-- @@ -39,3 +36,47 @@ This word refers to different areas of work or study. It's plural here because s ### --feedback-- This verb is used to talk about successfully reaching a goal, especially after putting in effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 12.16, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md index d0951b06bde..84aca093d52 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-75 --- - + # --description-- @@ -51,3 +48,65 @@ Lisa doesn't mention working less. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md index 1e5b8911585..9bd217faa04 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-76 --- - + # --description-- The words `much` and `many` are used to talk about quantity. @@ -52,3 +49,65 @@ Reflect on Lisa's statement about what makes tech jobs stand out for her. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md index 38a5ed3758e..013e56a7705 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-77 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to Brian's response to Lisa and fill in the missing word that shows he st ### --feedback-- This adverb is used to emphasize the truth or importance of a statement, showing strong agreement or belief. it ends with `ly`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 18.38 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.40, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.90 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md index 620135fd503..145afc143d8 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-78 --- - + # --description-- @@ -51,3 +48,47 @@ This word is used to describe different areas of study or work. This word is in ### --feedback-- These are different ways of viewing or thinking about something. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 18.80, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.20, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.70 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md index 5f88ce8ca38..56d23563f4a 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-79 --- - + # --description-- @@ -51,3 +48,56 @@ Consider Brian's interest in working across many fields versus concentrating on ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 3.82, + "finishTime": 10.02, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md index 9867dd455d5..36fa55aa8ae 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-80 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working together with others. Notice it ends with `-ing`, indica ### --feedback-- This adjective describes something that is thrilling or full of energy. It ends with `-ing`, showing a quality or state. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.62, + "finishTimestamp": 28.18 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md index 31ed219cb44..d126871e672 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-81 --- - + # --description-- @@ -45,3 +42,47 @@ TTo extend or go beyond usual limits or boundaries. It's often used to talk abou ### --feedback-- This noun refers to new ideas, products, or methods that improve something or solve problems. It's about coming up with new ways to do things. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 28.38, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md index 976777de56e..19ed243bc7e 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-82 --- - + # --description-- @@ -51,3 +48,56 @@ Consider whether Lisa's motivation is related to work environment or the nature ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.94 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md index cc4a931a4a1..9d83cc465d3 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-83 --- - + # --description-- @@ -52,3 +48,80 @@ He agrees with Lisa ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 34.98 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.45 + }, + { + "character": "Brian", + "opacity": 1, + "startTime": 8.45 + }, + { + "character": "Brian", + "startTime": 8.57, + "finishTime": 10.16, + "dialogue": { + "text": "I'm with you on that one.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.66 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md index 3c748ab456e..c9ec667c225 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-84 --- - + # --description-- @@ -37,3 +34,47 @@ This noun describes the ability to change or adapt easily according to different ### --feedback-- This word refers to the specific functions or positions that individuals can have within a group or organization. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 38.36 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.76 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md index f111304b929..566d8c5e7db 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-85 --- - + # --description-- @@ -20,7 +17,7 @@ Listen carefully and fill in the missing words about what tech roles make possib ## --sentence-- -`They _ us to balance our jobs with personal _ and hobbies.` +`I'm also interested in the flexibility that tech roles offer. They _ us to balance our jobs with personal _ and hobbies.` ## --blanks-- @@ -37,3 +34,56 @@ This verb means to make something possible or to give permission for something. ### --feedback-- This noun refers to things you enjoy doing, like hobbies or activities that catch your attention. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md index 0efe7ddf734..f5aab15821c 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-86 --- - + # --description-- @@ -55,3 +52,56 @@ Is Brian talking about traveling, or is he interested in something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md index 1828c2b24fd..f285c7e7f50 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-87 --- - + # --description-- @@ -45,3 +42,47 @@ This word means discovering or coming up with something, like an answer or solut ### --feedback-- This adjective means very exciting. It often describes something that makes your heart beat faster because it's so exciting or fun. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md index a2b77cc1c45..689b3e667de 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-88 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on the word `satisfaction` and if it suggests feeling tired. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md index 122529e8f39..fd8178da8fc 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-89 --- - + # --description-- @@ -43,3 +40,47 @@ This adjective describes something that is thrilling or causes great enthusiasm. ### --feedback-- This word means receiving or obtaining something. Here, it's also in the `-ing` form, indicating an ongoing action or process. Remember to use double `t`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md index f8bb1a273ee..a72f4990d84 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-90 --- - + # --description-- @@ -53,3 +50,47 @@ Brian talks about being excited by solving problems, not about where to find mot ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md index 93a91f9790d..f0a8796d57b 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md @@ -13,3 +13,221 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Bob", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sarah", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.6, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech?", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 5, + "finishTime": 7, + "dialogue": { + "text": "It's all those amazing gadgets!", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 7.8, + "finishTime": 9.6, + "dialogue": { + "text": "I can see your enthusiasm, Bob!", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 9.9, + "finishTime": 12.3, + "dialogue": { + "text": "Tell me, which tech gadgets are your absolute favorites?", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 13, + "finishTime": 16.2, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 16.3, + "finishTime": 18.9, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health,", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 19.2, + "finishTime": 22.7, + "dialogue": { + "text": "and even helps me stay organized with reminders and notifications.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 23.7, + "finishTime": 26, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 26, + "finishTime": 28.1, + "dialogue": { + "text": "The camera quality, the speed,", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 28.3, + "finishTime": 30.8, + "dialogue": { + "text": "and the number of apps available are what I like the most.", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 31.2, + "finishTime": 33.9, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 34.3, + "finishTime": 37.2, + "dialogue": { + "text": "Gadgets like these are transforming our daily lives.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 37.6, + "finishTime": 40.8, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 41.3, + "finishTime": 44, + "dialogue": { + "text": "I love capturing stunning aerial shots", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 44, + "finishTime": 46.5, + "dialogue": { + "text": "and exploring new angles for photography.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 47.7, + "finishTime": 50.3, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 50.7, + "finishTime": 52.7, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 52.7, + "finishTime": 54.5, + "dialogue": { + "text": "It's amazing how these innovations", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 54.5, + "finishTime": 56.8, + "dialogue": { + "text": "keep making our lives more interesting and connected.", + "align": "right" + } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.3 + }, + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.8 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md index 2f5b51c5efe..1c735765ddb 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-91 --- - + # --description-- @@ -47,3 +44,47 @@ This word is used to point out specific things that are being talked about, in t ### --feedback-- This word refers to small electronic devices or tools that are useful or interesting. It's often used to talk about cool tech items. It is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md index 06bb47f4e2f..7ddc748e75b 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-92 --- - + # --description-- @@ -51,3 +48,47 @@ The latest technology gadgets ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md index 746bfa4615b..96ed9a633c9 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-93 --- - + # --description-- @@ -27,3 +24,47 @@ Sarah: I can see your enthusiasm, Bob! ### --feedback-- This noun describes the feeling of being very excited or interested in something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 8.60 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 2.74, + "dialogue": { + "text": "I can see your enthusiasm, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.24 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md index a7eb6fcbfcb..4f55a749a61 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-94 --- - + # --description-- @@ -22,7 +19,7 @@ Sarah: I can see your enthusiasm, Bob! Tell me, which tech gadgets are your abso ## --sentence-- -`Tell me, _ tech gadgets are your _ favorites?` +`I can see your enthusiasm, Bob! Tell me, _ gadgets are your _ favorites?` ## --blanks-- @@ -39,3 +36,47 @@ This word asks for a specific choice or selection from a known group of items. ### --feedback-- This adjective emphasizes that the choice is the most complete or total among all options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 11.36 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.50, + "dialogue": { + "text": "I can see your enthusiasm, Bob. Tell me, which gadgets are your absolute favorites?", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.00 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md index 09bd788377d..9514f27cc60 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-95 --- - + # --description-- @@ -35,3 +32,47 @@ This preposition is used to show that something belongs to or is part of somethi ### --feedback-- This noun refers to a type of watch that has more features than just telling time, often including apps and internet connectivity. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 15.20 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.66 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md index b247dacc6dd..feadc88525d 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md @@ -5,10 +5,8 @@ challengeType: 22 dashedName: task-96 --- - + + # --description-- `To track` means to follow or monitor the progress, movement, or development of something or someone. @@ -44,3 +42,47 @@ This verb means to monitor or follow the course or progress of something, especi ### --feedback-- This verb means to make it easier or possible for someone to do something by offering services or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md index 99dcae91a0c..2c3332a8708 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-97 --- - + # --description-- @@ -45,3 +42,47 @@ This adjective means arranged in a systematic way, especially on a large scale. ### --feedback-- These are alerts or messages that prompt you to remember tasks or appointments. This word ends with `s`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md index 4d36b7b2989..49fbdc264ee 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-98 --- - + # --description-- @@ -51,3 +48,56 @@ It keeps him connected, tracks his health, and helps him stay organized ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.32, + "finishTime": 10.70, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 11.20 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md index 7185d037ed7..2d1e897054c 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-99 --- - + # --description-- @@ -35,3 +32,47 @@ This word is capitalized and in plural form. ### --feedback-- This word describes advanced mobile phones with extensive computing capabilities and connectivity. It is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 25.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.98 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md index 1f660afcb03..81e873d902e 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-100 --- - + # --description-- @@ -53,3 +50,47 @@ This adjective means something can be accessed or used, like apps in an app stor ### --feedback-- This word is used to indicate the highest degree or the greatest amount of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 25.24, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.60, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.10 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md index 6998dd4ffa5..1e063e1befc 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-101 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on whether design is a factor in Sarah's stated preferences. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.56, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 3.68, + "finishTime": 8.08, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 8.58 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md index dac54e85492..92b3b88cee4 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-102 --- - + # --description-- @@ -43,3 +40,47 @@ This verb means causing a significant change or improvement in something. This w ### --feedback-- This adjective refers to something that happens every day or is part of everyday life. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md index 66cda46110d..6e56479dc8d 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-103 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Bob mentions radio as a factor in transforming daily life. ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md index ec96099aa49..93b5cc92a66 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-104 --- - + # --description-- @@ -45,3 +42,47 @@ This word is used to talk about the current period of time or the present days. ### --feedback-- This noun refers to remote-controlled flying machines, often used for photography, racing, or recreation. This word is capitalized. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 39.78 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.20, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.70 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md index 2eb13bfcb4b..7bdc1f302f5 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-105 --- - + # --description-- @@ -43,3 +40,47 @@ This verb involves examining or investigating something in order to learn more a ### --feedback-- This noun refers to the art, practice, or job of taking pictures with a camera, capturing moments, and expressions. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md index 08e3ab9b847..95aa8e526fc 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-106 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective describes something extremely beautiful or impressive. ### --feedback-- In photography, this noun means photographs or the act of taking a photograph. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md index 1b7d3770f1d..f8e77d3a9fe 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-107 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective refers to something related to the air or happening in the sky. ### --feedback-- This noun refers to the specific viewpoints or positions from which photos are taken. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md index c172cb36554..cf2a562eb4c 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-108 --- - + # --description-- @@ -51,3 +48,56 @@ They allow for stunning aerial photography ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.2, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.78, + "finishTime": 9.98, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 10.48 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md index a67e640bd01..64e3aa577d5 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-109 --- - + # --description-- @@ -35,3 +32,47 @@ This adjective in the expression means allowing access, passage, or a view throu ### --feedback-- This noun refers to things that may happen or be the case in the future, often exciting or beneficial opportunities. it is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.48, + "finishTimestamp": 49.32 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.84, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 4.34 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md index a7c5acbe452..9a5e4ff7dc6 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-110 --- - + # --description-- @@ -35,3 +32,47 @@ This noun describes a strong feeling of enthusiasm or excitement for something o ### --feedback-- In this context, this adjective means that a feeling, especially a positive one like enthusiasm, can spread from one person to others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 49.52, + "finishTimestamp": 51.74 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.22, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.72 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md index 0578945ebcc..c64025643be 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-111 --- - + # --description-- @@ -51,3 +48,47 @@ This adjective describes something that arouses curiosity or is enjoyable and en ### --feedback-- This adjective means being in touch with others or having easy access to information, especially through technology. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 51.94, + "finishTimestamp": 56.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.10, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 5.60 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md index bc02e1710e1..fe30597a170 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-112 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on the enthusiasm and positivity in Sarah's statement. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.28, + "finishTimestamp": 55.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 6.26, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob. Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 6.46, + "finishTime": 10.36, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 10.86 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md index ebba772a320..20eaca5ac90 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md @@ -1,6 +1,5 @@ --- id: 65a533f54a5afeff6c6bb996 -videoId: nLDychdBwUg title: "Dialogue 5: Discussing Open-source Software" challengeType: 21 dashedName: dialogue-5-discussing-open-source-software @@ -13,3 +12,284 @@ Watch the video below to understand the context of the upcoming lessons. # --assignment-- Watch the video + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Tom", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sophie", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.5, + "dialogue": { + "text": "Hey, Sophie, what motivates you", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 3.8, + "finishTime": 6.9, + "dialogue": { + "text": "to work on open-source software projects in your free time?", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 7.8, + "finishTime": 10.2, + "dialogue": { + "text": "Well, I love contributing to open-source projects!", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 10.5, + "finishTime": 13, + "dialogue": { + "text": "I really like the sense of community and collaboration.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 13.5, + "finishTime": 15.4, + "dialogue": { + "text": "It's incredible how people from around the world", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 15.4, + "finishTime": 17.5, + "dialogue": { + "text": "come together to create something amazing.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 18.2, + "finishTime": 20.4, + "dialogue": { + "text": "Yeah. I checked out some open-source projects,", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 20.5, + "finishTime": 23.1, + "dialogue": { + "text": "but I admit that I have problems with the amount of time", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 23.1, + "finishTime": 24.3, + "dialogue": { + "text": "it can take to contribute.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 24.7, + "finishTime": 27.1, + "dialogue": { + "text": "Sometimes, it can be so time-consuming.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 27.1, + "finishTime": 29.7, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 29.9, + "finishTime": 33.3, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 33.8, + "finishTime": 36.5, + "dialogue": { + "text": "Open source is all about transparency and accessibility,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 36.5, + "finishTime": 38.4, + "dialogue": { + "text": "and that's something I truly believe in.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 39, + "finishTime": 42.2, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 42.7, + "finishTime": 45.7, + "dialogue": { + "text": "For me, I like the idea of practicing my skills", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 45.7, + "finishTime": 48, + "dialogue": { + "text": "and getting recognition for my contributions.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 48.5, + "finishTime": 51.4, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 52.4, + "finishTime": 56, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 56.4, + "finishTime": 58, + "dialogue": { + "text": "there isn't much you can do to save it.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 58.4, + "finishTime": 61.4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 62.2, + "finishTime": 65.2, + "dialogue": { + "text": "That's true. The sustainability of open-source projects", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 65.2, + "finishTime": 67.5, + "dialogue": { + "text": "is something I'm growing to appreciate more.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 67.8, + "finishTime": 69.2, + "dialogue": { + "text": "Thanks for sharing your motivations.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 69.8, + "finishTime": 71.7, + "dialogue": { + "text": "I think I'll see if I can find a project", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 71.7, + "finishTime": 72.8, + "dialogue": { + "text": "to dedicate some spare time to.", + "align": "left" + } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 73.3 + }, + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 73.8 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md index a463dcea5d0..ee5d378ba03 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-113 --- - + # --description-- @@ -37,3 +34,47 @@ This preposition is used to indicate involvement or engagement in a particular a ### --feedback-- This part of the term refers to the origin or starting point, in this case, indicating that the software's foundational code is open and accessible to all. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md index 2d227ef6fe5..1e409d23632 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-114 --- - + # --description-- @@ -51,3 +48,47 @@ Think about whether Tom is asking about skills or the reasons behind an activity ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md index ab28bfe2622..395d2fa3522 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-115 --- - + # --description-- @@ -20,7 +17,7 @@ Sophie: Well, I love contributing to open-source projects! I really like the sen ## --sentence-- -`I really like the sense of _ and _.` +`Well, I love contributing to open-source projects! I really like the sense of _ and _.` ## --blanks-- @@ -37,3 +34,47 @@ Describes a group of people who share common interests or values, especially in ### --feedback-- Refers to the act of working with someone to produce or create something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md index c9e678c193b..e321ce0b307 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-116 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Sophie's enjoyment comes from personal recognition or somethi ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md index 7b9101449a3..6a2c024d0c1 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-117 --- - + # --description-- @@ -45,3 +42,47 @@ Refers to the earth or the globe. ### --feedback-- Indicates the act of joining with others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md index d2ba30725da..3917f0f08f3 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-118 --- - + # --description-- @@ -51,3 +48,47 @@ Sophie talks about working as a group. Is it about being famous or doing somethi ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md index a0b608d8342..a41f1bfc8cb 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-119 --- - + # --description-- @@ -20,7 +17,7 @@ Tom: Yeah. I checked some open-source projects, but I admit that I have problems ## --sentence-- -`Yeah. I checked some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` +`Yeah, I checked out some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` ## --blanks-- @@ -37,3 +34,47 @@ This verb means to confess or acknowledge something, often reluctantly. ### --feedback-- This noun is used to describe the quantity or measure of something, in this case, referring to time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 23.34 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.28, + "dialogue": { + "text": "Yeah, I checked out some open-source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.78 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md index 6bcebcf1558..64acf0261ac 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-120 --- - + # --description-- @@ -18,7 +15,7 @@ Tom "Sometimes, it can be so time-consuming." ## --sentence-- -`Sometimes, it can be _ time-_.` +`Sometimes it can be _ time-_.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to emphasize the degree of something, in this case, how much t ### --feedback-- This word describes activities that use up a lot of time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 23.52, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.64, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.14 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md index 2bbaf6f322f..a2ad29fdb26 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-121 --- - + # --description-- @@ -51,3 +48,56 @@ Think about if Tom says the projects are easy or something else. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Yeah, I checked out some open source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 7.46, + "finishTime": 10.10, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 10.60 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md index 26975fa42d5..52145efc9dc 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-122 --- - + # --description-- @@ -21,7 +18,7 @@ For example, if you say: `I decided to learn a new language and practice every d ## --sentence-- -`It can _ a _.` +`I understand, Tom. It can _ a _.` ## --blanks-- @@ -38,3 +35,47 @@ This word is used to talk about something being true or existing. ### --feedback-- This word means a promise to do something or give your time to it, showing you are ready to work hard and keep your word. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 28.72 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md index 4232fcd5dbb..10d1d55dd1f 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-123 --- - + # --description-- @@ -35,3 +32,47 @@ This verb, in this context, means to tolerate or bear, especially when talking a ### --feedback-- This adjective describes something not open or accessible to the general public or kept for the use of a specific person or group. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md index 25acc5b187b..4920280d317 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-124 --- - + # --description-- @@ -35,3 +32,47 @@ This word, ending in `-ing`, means to observe or witness something happening.. ### --feedback-- Also ending in `-ing`, this word is used to describe the state or condition of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md index e4878ae4f6c..feb206c8d3b 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-125 --- - + # --description-- @@ -37,3 +34,51 @@ This word means being open and clear about things. It ends with `-y`, showing it ### --feedback-- This word is about making things easy for everyone to use or get. It ends with `-ity`, showing it's about the state of being accessible. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 32.52, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 5.74, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.24 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md index 2e6e266c6ab..b1b1c1ca42c 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-126 --- - + # --description-- -Sophie expresses her thoughts on open-source projects.. +Sophie expresses her thoughts on open-source projects. # --question-- @@ -51,3 +48,56 @@ Reflect on Sophie's belief in open source and its benefits. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 7.16, + "dialogue": { + "text": "I understand, Tom. It can be a commitment, but I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.56, + "finishTime": 12.10, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 12.60 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md index 9ef306c9252..e6c5fe030c7 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-127 --- - + # --description-- @@ -35,3 +32,51 @@ This noun refers to the quality of being open and clear, especially about proces ### --feedback-- This noun describes something that provides a reason or incentive for someone to act in a certain way or to put in more effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 41.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md index bbaba54e9e1..e05f1982063 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-128 --- - + # --description-- @@ -37,3 +34,51 @@ This verb means to perform an activity or exercise repeatedly or regularly in or ### --feedback-- This noun refers to the action or process of acknowledging someone's efforts, achievements, or qualities. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 41.5, + "finishTimestamp": 47.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.62, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.12 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md index a821137445a..5d15ffd7545 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-129 --- - + # --description-- @@ -35,3 +32,51 @@ This adjective is used to describe something that is very good or impressive. ### --feedback-- This adjective means having the ability, power, or qualities necessary to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 47.54, + "finishTimestamp": 50.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.9, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.4 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md index 76ee25756a6..045d8463245 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-130 --- - + # --description-- @@ -51,3 +48,69 @@ Reflect on whether Tom's attraction to open-source is about tight schedules. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 50.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.42, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.88, + "finishTime": 10.2, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 10.72, + "finishTime": 13.62, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 14.12 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md index f47924c5a21..763fa02b646 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-131 --- - + # --description-- @@ -18,7 +15,7 @@ Sophie: Also, when software becomes obsolete because it's no longer maintained, ## --sentence-- -`Also, when software becomes _, there isn't _ you can do to _ it.` +`Also, when software becomes _ because it's no longer maintained, there isn't _ you can do to _ it.` ## --blanks-- @@ -43,3 +40,51 @@ This word is used to indicate a small amount or degree; not a lot. ### --feedback-- This verb means to keep safe or rescue from harm or danger, in this context, to try and make something usable again. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md index 27b0dbb43cf..a187bb8b293 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-132 --- - + # --description-- @@ -43,3 +40,51 @@ Something that once was true or possible is not the case anymore. ### --feedback-- This contraction of `is not` is used to express the negation of the statement that follows, indicating a limitation or impossibility. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md index 8941733f8b9..ca97fa188f9 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-133 --- - + # --description-- @@ -51,3 +48,51 @@ It can't be used effectively anymore ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md index e225360b121..baadc6b07e8 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-134 --- - + # --description-- @@ -18,7 +15,7 @@ AUDIO REFERENCE: ## --sentence-- -`With open-_, there's always a _ for continuous improvement.` +`With open _, there's always a _ for continuous improvement.` ## --blanks-- @@ -35,3 +32,51 @@ Refers to a model where the source code is available for anyone to see, modify, ### --feedback-- This noun means an opportunity or possibility for something to happen or be done, especially something desirable. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md index 410699942ed..15c83340f6f 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-135 --- - + # --description-- @@ -35,3 +32,51 @@ It indicates an ongoing, unending process of enhancement or development. ### --feedback-- It refers to the act of making something better, more effective, or more efficient. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md index a8c886124e7..7718697bd96 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-137 --- - + # --description-- @@ -27,3 +24,51 @@ Tom: The sustainability of open-source projects is something I'm growing to appr ### --feedback-- It refers to the ongoing development of open-source projects over the long term. it ends with `-y`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md index dcc88c43208..d6ae5f89d89 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-138 --- - + # --description-- -`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time,` means they might not like them at first, but after some timethey start to like them more. +`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time` means they might not like them at first, but after some timethey start to like them more. # --fillInTheBlank-- @@ -34,4 +31,52 @@ This word means being able to continue over time in a good way. ### --feedback-- -Starting to like something more as you understand it better. +Starting to like something more as you understand it better. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md index ecd1d6e7c95..abc9cf2415f 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-139 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on Tom's statement about sustainability and appreciation, not complexity ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md index a6a32b631e8..87c40eaf830 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-140 --- - + # --description-- @@ -47,3 +44,51 @@ This verb means to discover or locate something after searching for it. ### --feedback-- Describes time that is available to use as you wish, not taken up by work or other obligations. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md index bd2fddb1bb4..52d0740b1db 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-141 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on whether Tom's interest is in language learning or engaging in a proje ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md index ea7dbd6dc1e..05dc28f6ddc 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-1 --- - + # --description-- @@ -18,7 +15,7 @@ Listen to what Brian asks Maria. Pay attention to the verbs he uses. ## --sentence-- -`Hey Maria, I _ a question. Do you know what _ the team?` +`Maria, I _ a question. Do you know what _ the team?` ## --blanks-- @@ -35,3 +32,47 @@ This verb is used when someone is in possession of something or wants to express ### --feedback-- This word means to give someone a reason to do something. This verb in conjugated in the third person. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 3.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.02 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md index d39e86e67e9..ef6b246a2e4 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-2 --- - + # --description-- @@ -39,3 +36,47 @@ This word is used to indicate the reason or cause of something. It is conjugated ### --feedback-- It ends with `-ed` because it's an adjective that comes from a verb. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 3.92, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.50, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.00 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md index 5c39c1c7312..050241fa5e6 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-3 --- - + # --description-- @@ -20,7 +17,7 @@ Listen to the audio and complete the sentence. ## --sentence-- -`Hey Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` +`Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` ## --blanks-- @@ -37,3 +34,56 @@ Think about the word that means to give someone a reason to do something right n ### --feedback-- This word describes how someone feels when they have a reason or desire to do something. This word ends with `-ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md index 4a6aa89ed04..90a6bbe82b3 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md @@ -5,20 +5,17 @@ challengeType: 19 dashedName: task-4 --- - + # --description-- -In the dialogue, Brian asks three questions but they are all connected. +In the dialogue, Brian asks a couple of related questions. # --question-- ## --text-- -`What is Brian asking Maria about?` +What is Brian asking Maria about? ## --answers-- @@ -51,3 +48,56 @@ The conversation is centered around motivation, not the physical location of whe ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md index 3e923e63532..f725307b614 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-21 --- - + # --description-- @@ -36,3 +33,46 @@ This word means working together with others on a project or task. It ends with This word means thinking of many ideas together with a group of people. It ends with `-ing`. +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md index 1c4102ed1d3..2522ee2b5e1 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-22 --- - + # --description-- @@ -51,3 +48,47 @@ Maria refers to her creative team, not her friends, as her collaborators. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.28 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.28 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md index c3f28429a68..ab0e4646869 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-23 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to create or produce something, especially ideas or solutions. ### --feedback-- This word refers to ideas or plans that are used in thinking, discussion, or creating something new. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 41.84, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.78, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.28 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md index c2510030f2c..8795bdf6d10 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-24 --- - + # --description-- @@ -51,3 +48,56 @@ Collaborating with the creative team ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.70, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.14, + "finishTime": 7.92, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 8.42 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md index 3c6ee35860c..b801e7efce9 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-25 --- - + # --description-- @@ -35,3 +32,47 @@ This word means working together with others to achieve a goal. This word is cap ### --feedback-- This word refers to the use of imagination or original ideas to create something. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 48.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.22 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md index a9680b0824a..75c938c595f 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-27 --- - + # --description-- @@ -37,3 +34,47 @@ This word means to find something or someone without planning to, especially pro ### --feedback-- This word is used for problems with machines or computers that need special knowledge to understand or fix. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md index 5ee0b89f981..89a97ac83d7 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-29 --- - + # --description-- @@ -27,3 +24,47 @@ When something is `frustrating`, it makes you feel upset or annoyed because you ### --feedback-- This word is used when something makes you feel upset or annoyed because it is difficult or impossible to deal with. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 53.02, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.50, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.00 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md index 1f9e7b21387..02733f0f66c 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-30 --- - + # --description-- @@ -51,3 +48,65 @@ Does having many ideas make Brian frustrated, or is it something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 5.02, + "finishTime": 9.34, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 9.74, + "finishTime": 11.24, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 11.74 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md index 3dddb17e8ef..47e9d5633b4 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-31 --- - + # --description-- @@ -35,3 +32,47 @@ This word means little problems with things like computers or apps. When there a ### --feedback-- This word means to make an effort to do something, especially when it's hard. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md index fe21921444c..ce9ced73581 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-33 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether taking a break is mentioned as a way to deal with glitches. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md index 69d94c303e5..7c44898f823 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-34 --- - + # --description-- @@ -37,3 +34,47 @@ This word means being very excited or eager about something. It's like when you ### --feedback-- This word means finding a way to fix a problem. It's like when you figure out the answer to a difficult question. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.76, + "finishTimestamp": 65.66 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.90, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.40 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md index 0365cb0e9f0..17d79cd22ec 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md @@ -6,10 +6,7 @@ dashedName: task-36 --- - + # --description-- @@ -52,3 +49,56 @@ Reflect on whether the speed of solving problems is what Maria highlights as mot ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.96, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.7, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.16, + "finishTime": 8.84, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 9.34 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md index 7525fdadd5f..39df7aceed5 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-37 --- - + # --description-- @@ -18,7 +15,7 @@ In this part of the conversation, Brian talks about how the talk made him feel a ## --sentence-- -`Yeah. Wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` +`Yeah, wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` ## --blanks-- @@ -35,3 +32,47 @@ This word means something that gives you energy or a reason to do something. It' ### --feedback-- This word means giving something that you have to others. It's like when you tell someone your ideas or feelings. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 70.38, + "finishTimestamp": 76.10 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 6.72, + "dialogue": { + "text": "Yeah, wow. You know what? This was a really motivating talk. Thanks for sharing your thoughts.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.22 + } + ] +} +``` diff --git a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md index 6bb2b29cd3b..b1bcee11103 100644 --- a/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md +++ b/curriculum/challenges/swahili/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-136 --- - + # --description-- @@ -51,3 +48,60 @@ Reflect on the connection between updates and user experience Sophie suggests. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.02, + "finishTime": 10.02, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md b/curriculum/challenges/ukrainian/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md index 8b285e9c0eb..6af22b9cdd1 100644 --- a/curriculum/challenges/ukrainian/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md +++ b/curriculum/challenges/ukrainian/01-responsive-web-design/applied-accessibility/improve-accessibility-of-audio-content-with-the-audio-element.md @@ -26,7 +26,7 @@ dashedName: improve-accessibility-of-audio-content-with-the-audio-element # --instructions-- -Давайте відпочинемо від Camper Cat та зустрінемося з його приятелем Зерсіаксом (@zersiax), чемпіоном з доступності та користувачем програми для читання з екрану. To hear a clip of his screen reader in action, add an `audio` element after the `p` element. Додайте атрибут `controls`. Then place a `source` element inside the `audio` tags with the `src` attribute set to `https://s3.amazonaws.com/freecodecamp/screen-reader.mp3` and `type` attribute set to `"audio/mpeg"`. +Давайте відпочинемо від Camper Cat та зустрінемося з його приятелем Зерсіаксом (@zersiax), чемпіоном з доступності та користувачем програми для читання з екрану. To hear a clip of his screen reader in action, add an `audio` element after the `p` element. Додайте атрибут `controls`. Then place a `source` element inside the `audio` tags with the `src` attribute set to `https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3` and `type` attribute set to `"audio/mpeg"`. **Примітка:** Запис може здатися занадто швидким і малозрозумілим, але це звичайна швидкість для користувачів зчитувачів з екрану. @@ -70,7 +70,7 @@ assert($('audio').children('source').length === 1); ```js assert( $('source').attr('src') === - 'https://s3.amazonaws.com/freecodecamp/screen-reader.mp3' + 'https://cdn.freecodecamp.org/curriculum/applied-accessibility/screen-reader.mp3' ); ``` @@ -108,7 +108,7 @@ assert($('source').attr('type') === 'audio/mpeg');

A sound clip of Zersiax's screen reader in action.

diff --git a/curriculum/challenges/ukrainian/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md b/curriculum/challenges/ukrainian/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md index 7de18963c94..0b6af91a5f3 100644 --- a/curriculum/challenges/ukrainian/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md +++ b/curriculum/challenges/ukrainian/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md @@ -93,7 +93,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -186,7 +186,7 @@ assert($('.profile-name').css('flex-direction') == 'column'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/ukrainian/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md b/curriculum/challenges/ukrainian/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md index 11af6455c27..bafcdc5308b 100644 --- a/curriculum/challenges/ukrainian/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md +++ b/curriculum/challenges/ukrainian/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md @@ -102,7 +102,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -198,7 +198,7 @@ assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g)); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/ukrainian/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md b/curriculum/challenges/ukrainian/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md index 7f0559c49d3..68676985d0e 100644 --- a/curriculum/challenges/ukrainian/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md +++ b/curriculum/challenges/ukrainian/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md @@ -95,7 +95,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -190,7 +190,7 @@ assert($('.follow-btn').css('align-items') == 'center'); }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/ukrainian/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md b/curriculum/challenges/ukrainian/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md index add1f2ee16f..6854385b8a0 100644 --- a/curriculum/challenges/ukrainian/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md +++ b/curriculum/challenges/ukrainian/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md @@ -98,7 +98,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

@@ -192,7 +192,7 @@ assert( }
- Quincy Larson's profile picture + Quincy Larson's profile picture

Quincy Larson

@ossia

diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md new file mode 100644 index 00000000000..47a2bcd6988 --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/build-a-budget-app-project/budget-app.md @@ -0,0 +1,887 @@ +--- +id: 5e44413e903586ffb414c94e +title: Build a Budget App Project +challengeType: 23 +forumTopicId: 462361 +dashedName: build-a-budget-app-project +--- + +# --description-- + +Complete the `Category` class. It should be able to instantiate objects based on different budget categories like *food*, *clothing*, and *entertainment*. When objects are created, they are passed in the name of the category. The class should have an instance variable called `ledger` that is a list. The class should also contain the following methods: + +- A `deposit` method that accepts an amount and description. If no description is given, it should default to an empty string. The method should append an object to the ledger list in the form of `{"amount": amount, "description": description}`. +- A `withdraw` method that is similar to the `deposit` method, but the amount passed in should be stored in the ledger as a negative number. If there are not enough funds, nothing should be added to the ledger. This method should return `True` if the withdrawal took place, and `False` otherwise. +- A `get_balance` method that returns the current balance of the budget category based on the deposits and withdrawals that have occurred. +- A `transfer` method that accepts an amount and another budget category as arguments. The method should add a withdrawal with the amount and the description "Transfer to [Destination Budget Category]". The method should then add a deposit to the other budget category with the amount and the description "Transfer from [Source Budget Category]". If there are not enough funds, nothing should be added to either ledgers. This method should return `True` if the transfer took place, and `False` otherwise. +- A `check_funds` method that accepts an amount as an argument. It returns `False` if the amount is greater than the balance of the budget category and returns `True` otherwise. This method should be used by both the `withdraw` method and `transfer` method. + +When the budget object is printed it should display: + +- A title line of 30 characters where the name of the category is centered in a line of `*` characters. +- A list of the items in the ledger. Each line should show the description and amount. The first 23 characters of the description should be displayed, then the amount. The amount should be right aligned, contain two decimal places, and display a maximum of 7 characters. +- A line displaying the category total. + +Here is an example usage: + +```py +food = Category("Food") +food.deposit(1000, "deposit") +food.withdraw(10.15, "groceries") +food.withdraw(15.89, "restaurant and more food for dessert") +clothing = Category("Clothing") +food.transfer(50, clothing) +print(food) +``` + +And here is an example of the output: + +```bash +*************Food************* +initial deposit 1000.00 +groceries -10.15 +restaurant and more foo -15.89 +Transfer to Clothing -50.00 +Total: 923.96 +``` + +Besides the `Category` class, create a function (outside of the class) called `create_spend_chart` that takes a list of categories as an argument. It should return a string that is a bar chart. + +The chart should show the percentage spent in each category passed in to the function. The percentage spent should be calculated only with withdrawals and not with deposits. Down the left side of the chart should be labels 0 - 100. The "bars" in the bar chart should be made out of the "o" character. The height of each bar should be rounded down to the nearest 10. The horizontal line below the bars should go two spaces past the final bar. Each category name should be written vertically below the bar. There should be a title at the top that says "Percentage spent by category". + +This function will be tested with up to four categories. + +Look at the example output below very closely and make sure the spacing of the output matches the example exactly. + +```bash +Percentage spent by category +100| + 90| + 80| + 70| + 60| o + 50| o + 40| o + 30| o + 20| o o + 10| o o o + 0| o o o + ---------- + F C A + o l u + o o t + d t o + h + i + n + g +``` + +# --hints-- + +The `deposit` method should create a specific object in the ledger instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit(self): + self.food.deposit(900, "deposit") + actual = self.food.ledger[0] + expected = {"amount": 900, "description": "deposit"} + self.assertEqual(actual, expected, 'Expected "deposit" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `deposit` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_deposit_no_description(self): + self.food.deposit(45.56) + actual = self.food.ledger[0] + expected = {"amount": 45.56, "description": ""} + self.assertEqual(actual, expected, 'Expected calling "deposit" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should create a specific object in the `ledger` instance variable. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": "milk, cereal, eggs, bacon, bread"} + self.assertEqual(actual, expected, 'Expected "withdraw" method to create a specific object in the ledger instance variable.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `withdraw` method with no description should create a blank description. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + actual = self.food.ledger[1] + expected = {"amount": -45.67, "description": ""} + self.assertEqual(actual, expected, 'Expected "withdraw" method with no description to create a blank description.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `True` if the withdrawal took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_description(self): + self.food.deposit(900, "deposit") + good_withdraw = self.food.withdraw(45.67) + self.assertEqual(good_withdraw, True, 'Expected "withdraw" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `food.deposit(900, "deposit")` and `food.withdraw(45.67, "milk, cereal, eggs, bacon, bread")` should return a balance of `854.33`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_get_balance(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + actual = self.food.get_balance() + expected = 854.33 + self.assertEqual(actual, expected, 'Expected balance to be 854.33') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling the `transfer` method on a category object should create a specific ledger item in that category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.food.ledger[2] + expected = {"amount": -transfer_amount, "description": "Transfer to Entertainment"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `True` if the transfer took place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + self.assertEqual(good_transfer, True, 'Expected "transfer" method to return "True".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `transfer` on a category object should reduce the balance in the category object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + food_balance_before = self.food.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + food_balance_after = self.food.get_balance() + self.assertEqual(food_balance_before - food_balance_after, transfer_amount, 'Expected "transfer" method to reduce balance in food object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should increase the balance of the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + entertainment_balance_before = self.entertainment.get_balance() + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + entertainment_balance_after = self.entertainment.get_balance() + self.assertEqual(entertainment_balance_after - entertainment_balance_before, transfer_amount, 'Expected "transfer" method to increase balance in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should create a specific ledger item in the category object passed as its argument. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + transfer_amount = 20 + good_transfer = self.food.transfer(transfer_amount, self.entertainment) + actual = self.entertainment.ledger[0] + expected = {"amount": transfer_amount, "description": "Transfer from Food"} + self.assertEqual(actual, expected, 'Expected "transfer" method to create a specific ledger item in entertainment object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `False` if the amount passed to the method is greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(20) + expected = False + self.assertEqual(actual, expected, 'Expected "check_funds" method to be False') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `check_funds` method should return `True` if the amount passed to the method is not greater than the category balance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_check_funds(self): + self.food.deposit(10, "deposit") + actual = self.food.check_funds(10) + expected = True + self.assertEqual(actual, expected, 'Expected "check_funds" method to be True') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `withdraw` method should return `False` if the withdrawal didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + + def test_withdraw_no_funds(self): + self.food.deposit(100, "deposit") + good_withdraw = self.food.withdraw(100.10) + self.assertEqual(good_withdraw, False, 'Expected "withdraw" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `transfer` method should return `False` if the transfer didn't take place. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_transfer_no_funds(self): + self.food.deposit(100, "deposit") + good_transfer = self.food.transfer(200, self.entertainment) + self.assertEqual(good_transfer, False, 'Expected "transfer" method to return "False".') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Printing a `Category` instance should give a different string representation of the object. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + + def test_to_string(self): + self.food.deposit(900, "deposit") + self.food.withdraw(45.67, "milk, cereal, eggs, bacon, bread") + self.food.transfer(20, self.entertainment) + actual = str(self.food) + expected = "*************Food*************\\ndeposit 900.00\\nmilk, cereal, eggs, bac -45.67\\nTransfer to Entertainme -20.00\\nTotal: 834.33" + self.assertEqual(actual, expected, 'Expected different string representation of object.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +` + const out = runPython(testCode); + assert(out); + } +}) +``` + +`create_spend_chart` should print a different chart representation. Check that all spacing is exact. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/budget.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import budget +from importlib import reload + +reload(budget) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.food = budget.Category("Food") + self.entertainment = budget.Category("Entertainment") + self.business = budget.Category("Business") + + def test_create_spend_chart(self): + self.food.deposit(900, "deposit") + self.entertainment.deposit(900, "deposit") + self.business.deposit(900, "deposit") + self.food.withdraw(105.55) + self.entertainment.withdraw(33.40) + self.business.withdraw(10.99) + actual = budget.create_spend_chart([self.business, self.food, self.entertainment]) + expected = "Percentage spent by category\\n100| \\n 90| \\n 80| \\n 70| o \\n 60| o \\n 50| o \\n 40| o \\n 30| o \\n 20| o o \\n 10| o o \\n 0| o o o \\n ----------\\n B F E \\n u o n \\n s o t \\n i d e \\n n r \\n e t \\n s a \\n s i \\n n \\n m \\n e \\n n \\n t " + self.assertEqual(actual, expected, 'Expected different chart representation. Check that all spacing is exact.') +`); + + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Category: + pass + +def create_spend_chart(categories): + pass +``` + +# --solutions-- + +```py +class Category: + + def __init__(self, name): + self.name = name + self.ledger = [] + self.balance = 0 + self.spent = 0 + + def __str__(self): + first_line = f'{self.name.center(30, "*")}\n' + lines = '' + total = f'Total: {format(self.balance, ".2f")}' + + for n in range(len(self.ledger)): + descr = self.ledger[n]["description"][:23] + am = format(float(self.ledger[n]["amount"]), ".2f")[:7] + lines = lines + f'{descr:<23}{am:>7}\n' + + return f'{first_line}{lines}{total}' + + def deposit(self, amount, description=''): + self.ledger.append({ + 'amount': float(amount), + 'description': description + }) + self.balance = self.balance + float(amount) + + def withdraw(self, amount, description=''): + if self.check_funds(amount): + self.ledger.append({ + 'amount': -float(amount), + 'description': description + }) + self.balance = self.balance - float(amount) + self.spent = self.spent + float(amount) + return True + else: + return False + + def get_balance(self): + return self.balance + + def transfer(self, amount, category): + if self.check_funds(amount): + # withdraw + self.ledger.append({ + 'amount': -float(amount), + 'description': f'Transfer to {category.name}' + }) + self.balance = self.balance - float(amount) + # deposit + category.deposit(amount, f'Transfer from {self.name}') + + return True + else: + return False + + def check_funds(self, amount): + if float(amount) > self.balance: + return False + else: + return True + + +def create_spend_chart(categories): + total_expenses = 0 + obj = {} + col1 = [] + str = [] + final_str = 'Percentage spent by category\n' + label_max_length = 0 + label_strings = [] + + for category in categories: + total_expenses = total_expenses + category.spent + obj[category.name] = {'expenses': category.spent} + obj[category.name]['label'] = list(category.name) + if len(obj[category.name]['label']) > label_max_length: + label_max_length = len(obj[category.name]['label']) + + for category in categories: + obj[category.name]['percent'] = ( + (category.spent / total_expenses * 100) // 10) * 10 + obj[category.name]['column'] = [] + for i in range(0, 110, 10): + if obj[category.name]['percent'] >= i: + obj[category.name]['column'].insert(0, 'o') + else: + obj[category.name]['column'].insert(0, ' ') + + for i in range(0, 110, 10): + col1.insert(0, i) + + for i in range(11): + str.append("") + for key in obj: + str[i] += (f'{obj[key]["column"][i]} ') + final_str += f'{col1[i]:>3}| {str[i]}\n' + final_str += f' {"-"*(1+3*len(obj))}\n ' + + for i in range(label_max_length): + label_strings.append(' ') + for k in obj: + if len(obj[k]['label']) < label_max_length: + obj[k]['label'].extend( + f'{" "*(label_max_length-len(obj[k]["label"]))}') + + label_strings[i] += f'{obj[k]["label"][i]} ' + if i < label_max_length - 1: + label_strings[i] += '\n ' + final_str += label_strings[i] + + print(final_str) + return (final_str) + +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md new file mode 100644 index 00000000000..ef719adc3a7 --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/build-a-polygon-area-calculator-project/polygon-area-calculator.md @@ -0,0 +1,869 @@ +--- +id: 5e444147903586ffb414c94f +title: Build a Polygon Area Calculator Project +challengeType: 23 +forumTopicId: 462363 +dashedName: build-a-polygon-area-calculator-project +--- + +# --description-- + +In this project you will use object oriented programming to create a `Rectangle` class and a `Square` class. The `Square` class should be a subclass of `Rectangle`, and inherit its methods and attributes. + +## Rectangle class + +When a Rectangle object is created, it should be initialized with `width` and `height` attributes. The class should also contain the following methods: + +- `set_width` +- `set_height` +- `get_area`: Returns area (`width * height`) +- `get_perimeter`: Returns perimeter (`2 * width + 2 * height`) +- `get_diagonal`: Returns diagonal (`(width ** 2 + height ** 2) ** .5`) +- `get_picture`: Returns a string that represents the shape using lines of "\*". The number of lines should be equal to the height and the number of "\*" in each line should be equal to the width. There should be a new line (`\n`) at the end of each line. If the width or height is larger than 50, this should return the string: "Too big for picture.". +- `get_amount_inside`: Takes another shape (square or rectangle) as an argument. Returns the number of times the passed in shape could fit inside the shape (with no rotations). For instance, a rectangle with a width of 4 and a height of 8 could fit in two squares with sides of 4. + +Additionally, if an instance of a `Rectangle` is represented as a string, it should look like: `Rectangle(width=5, height=10)` + +## Square class + +The `Square` class should be a subclass of `Rectangle`. When a `Square` object is created, a single side length is passed in. The `__init__` method should store the side length in both the `width` and `height` attributes from the `Rectangle` class. + +The `Square` class should be able to access the `Rectangle` class methods but should also contain a `set_side` method. If an instance of a `Square` is represented as a string, it should look like: `Square(side=9)` + +Additionally, the `set_width` and `set_height` methods on the `Square` class should set both the width and height. + +## Usage example + +```py +rect = Rectangle(10, 5) +print(rect.get_area()) +rect.set_height(3) +print(rect.get_perimeter()) +print(rect) +print(rect.get_picture()) + +sq = Square(9) +print(sq.get_area()) +sq.set_side(4) +print(sq.get_diagonal()) +print(sq) +print(sq.get_picture()) + +rect.set_height(8) +rect.set_width(16) +print(rect.get_amount_inside(sq)) +``` + +That code should return: + +```bash +50 +26 +Rectangle(width=10, height=3) +********** +********** +********** + +81 +5.656854249492381 +Square(side=4) +**** +**** +**** +**** + +8 +``` + +# --hints-- + +The `Square` class should be a subclass of the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_subclass(self): + actual = issubclass(shape_calculator.Square, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a subclass of the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `Square` class should be a distinct class from the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + + def test_distinct_classes(self): + actual = shape_calculator.Square is not shape_calculator.Rectangle + expected = True + self.assertEqual(actual, expected, 'Expected Square class to be a distinct class from the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +A square object should be an instance of the `Square` class and the `Rectangle` class. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_is_square_and_rectangle(self): + actual = isinstance(self.sq, shape_calculator.Square) and isinstance(self.sq, shape_calculator.Rectangle) + expected = True + self.assertEqual(actual, expected, 'Expected square object to be an instance of the Square class and the Rectangle class.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Rectangle(3, 6)` should be `Rectangle(width=3, height=6)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_string(self): + actual = str(self.rect) + expected = "Rectangle(width=3, height=6)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle to be "Rectangle(width=3, height=6)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The string representation of `Square(5)` should be `Square(side=5)`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_string(self): + actual = str(self.sq) + expected = "Square(side=5)" + self.assertEqual(actual, expected, 'Expected string representation of square to be "Square(side=5)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_area()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_area(self): + actual = self.rect.get_area() + expected = 18 + self.assertEqual(actual, expected, 'Expected area of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_area()` should return `25`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_area(self): + actual = self.sq.get_area() + expected = 25 + self.assertEqual(actual, expected, 'Expected area of square to be 25') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_perimeter()` should return `18`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_perimeter(self): + actual = self.rect.get_perimeter() + expected = 18 + self.assertEqual(actual, expected, 'Expected perimeter of rectangle to be 18') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_perimeter()` should return `20`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_perimeter(self): + actual = self.sq.get_perimeter() + expected = 20 + self.assertEqual(actual, expected, 'Expected perimeter of square to be 20') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(3, 6).get_diagonal()` should return `6.708203932499369`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_diagonal(self): + actual = self.rect.get_diagonal() + expected = 6.708203932499369 + self.assertEqual(actual, expected, 'Expected diagonal of rectangle to be 6.708203932499369') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Square(5).get_diagonal()` should return `7.0710678118654755`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_diagonal(self): + actual = self.sq.get_diagonal() + expected = 7.0710678118654755 + self.assertEqual(actual, expected, 'Expected diagonal of square to be 7.0710678118654755') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Rectangle` class should have a different string representation after setting new values. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_set_attributes(self): + self.rect.set_width(7) + self.rect.set_height(8) + actual = str(self.rect) + expected = "Rectangle(width=7, height=8)" + self.assertEqual(actual, expected, 'Expected string representation of rectangle after setting new values to be "Rectangle(width=7, height=8)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_side()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_side(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +An instance of the `Square` class should have a different string representation after setting new values by using `.set_width()` or `set_height()`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_set_attributes(self): + self.sq.set_height(2) + actual = str(self.sq) + expected = "Square(side=2)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting new values to be "Square(side=2)"') + self.sq.set_width(4) + actual = str(self.sq) + expected = "Square(side=4)" + self.assertEqual(actual, expected, 'Expected string representation of square after setting width to be "Square(side=4)"') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Rectangle` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_rectangle_picture(self): + self.rect.set_width(7) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "*******\\n*******\\n*******\\n" + self.assertEqual(actual, expected, 'Expected rectangle picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return a different string representation of a `Square` instance. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.sq = shape_calculator.Square(5) + + def test_square_picture(self): + self.sq.set_side(2) + actual = self.sq.get_picture() + expected = "**\\n**\\n" + self.assertEqual(actual, expected, 'Expected square picture to be different.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +The `.get_picture()` method should return the string `Too big for picture.` if the `width` or `height` attributes are larger than `50`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_big_picture(self): + self.rect.set_width(51) + self.rect.set_height(3) + actual = self.rect.get_picture() + expected = "Too big for picture." + self.assertEqual(actual, expected, 'Expected message: "Too big for picture."') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(15,10).get_amount_inside(Square(5))` should return `6`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + self.sq = shape_calculator.Square(5) + + def test_get_amount_inside(self): + self.rect.set_height(10) + self.rect.set_width(15) + actual = self.rect.get_amount_inside(self.sq) + expected = 6 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 6.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(4,8).get_amount_inside(Rectangle(3, 6))` should return `1`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_two_rectangles(self): + rect2 = shape_calculator.Rectangle(4, 8) + actual = rect2.get_amount_inside(self.rect) + expected = 1 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 1.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +`Rectangle(2,3).get_amount_inside(Rectangle(3, 6))` should return `0`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/shape_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py',` +import unittest +import shape_calculator +from importlib import reload +reload(shape_calculator) +class UnitTests(unittest.TestCase): + maxDiff = None + def setUp(self): + self.rect = shape_calculator.Rectangle(3, 6) + + def test_get_amount_inside_none(self): + rect2 = shape_calculator.Rectangle(2, 3) + actual = rect2.get_amount_inside(self.rect) + expected = 0 + self.assertEqual(actual, expected, 'Expected "get_amount_inside" to return 0.') +`); + const testCode = ` +from unittest import main +from importlib import reload +import test_module +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +class Rectangle: + pass + +class Square: + pass +``` + +# --solutions-- + +```py +class Rectangle: + def __init__(self, width, height): + self.width = width + self.height = height + + def __str__(self): + return f'Rectangle(width={self.width}, height={self.height})' + + def set_width(self, width): + self.width = width + + def set_height(self, height): + self.height = height + + def get_area(self): + area = self.width * self.height + return area + + def get_perimeter(self): + perimeter = self.width * 2 + self.height * 2 + return perimeter + + def get_diagonal(self): + diagonal = (self.width ** 2 + self.height ** 2) ** 0.5 + return diagonal + + def get_picture(self): + if self.width < 50 and self.height < 50: + picture = f'{"*"*self.width}\n'*self.height + return picture + else: + return 'Too big for picture.' + + def get_amount_inside(self, polygon): + h_number = self.height // polygon.height + w_number = self.width // polygon.width + repetition = h_number * w_number + return repetition + + +class Square(Rectangle): + def __init__(self, side): + self.width = side + self.height = side + + def __str__(self): + return f'Square(side={self.width})' + + def set_width(self, side): + self.width = side + self.height = side + + def set_height(self, side): + self.height = side + self.width = side + + def set_side(self,side): + self.width = side + self.height = side + +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md new file mode 100644 index 00000000000..94cf5c682de --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/build-a-probability-calculator-project/probability-calculator.md @@ -0,0 +1,300 @@ +--- +id: 5e44414f903586ffb414c950 +title: Build a Probability Calculator Project +challengeType: 23 +forumTopicId: 462364 +dashedName: build-a-probability-calculator-project +--- + +# --description-- + +Suppose there is a hat containing 5 blue balls, 4 red balls, and 2 green balls. What is the probability that a random draw of 4 balls will contain at least 1 red ball and 2 green balls? While it would be possible to calculate the probability using advanced mathematics, an easier way is to write a program to perform a large number of experiments to estimate an approximate probability. + +For this project, you will write a program to determine the approximate probability of drawing certain balls randomly from a hat. + +First, create a `Hat` class in `main.py`. The class should take a variable number of arguments that specify the number of balls of each color that are in the hat. For example, a class object could be created in any of these ways: + +```py +hat1 = Hat(yellow=3, blue=2, green=6) +hat2 = Hat(red=5, orange=4) +hat3 = Hat(red=5, orange=4, black=1, blue=0, pink=2, striped=9) +``` + +A hat will always be created with at least one ball. The arguments passed into the hat object upon creation should be converted to a `contents` instance variable. `contents` should be a list of strings containing one item for each ball in the hat. Each item in the list should be a color name representing a single ball of that color. For example, if your hat is `{"red": 2, "blue": 1}`, `contents` should be `["red", "red", "blue"]`. + +The `Hat` class should have a `draw` method that accepts an argument indicating the number of balls to draw from the hat. This method should remove balls at random from `contents` and return those balls as a list of strings. The balls should not go back into the hat during the draw, similar to an urn experiment without replacement. If the number of balls to draw exceeds the available quantity, return all the balls. + +Next, create an `experiment` function in `main.py` (not inside the `Hat` class). This function should accept the following arguments: + +- `hat`: A hat object containing balls that should be copied inside the function. +- `expected_balls`: An object indicating the exact group of balls to attempt to draw from the hat for the experiment. For example, to determine the probability of drawing 2 blue balls and 1 red ball from the hat, set `expected_balls` to `{"blue":2, "red":1}`. +- `num_balls_drawn`: The number of balls to draw out of the hat in each experiment. +- `num_experiments`: The number of experiments to perform. (The more experiments performed, the more accurate the approximate probability will be.) + +The `experiment` function should return a probability. + +For example, if you want to determine the probability of getting at least two red balls and one green ball when you draw five balls from a hat containing six black, four red, and three green. To do this, you will perform `N` experiments, count how many times `M` you get at least two red balls and one green ball, and estimate the probability as `M/N`. Each experiment consists of starting with a hat containing the specified balls, drawing several balls, and checking if you got the balls you were attempting to draw. + +Here is how you would call the `experiment` function based on the example above with 2000 experiments: + +```py +hat = Hat(black=6, red=4, green=3) +probability = experiment(hat=hat, + expected_balls={"red":2,"green":1}, + num_balls_drawn=5, + num_experiments=2000) +``` + +The output would be something like this: + +```bash +0.356 +``` + +Since this is based on random draws, the probability will be slightly different each time the code is run. + +_Hint: Consider using the modules that are already imported at the top. Do not initialize random seed within the file._ + + +# --hints-- + +Creation of `hat` object should add correct contents. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_class_contents(self): + hat = probability_calculator.Hat(red=3,blue=2) + actual = hat.contents + expected = ["red","red","red","blue","blue"] + self.assertEqual(actual, expected, 'Expected creation of hat object to add correct contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method in `hat` class should reduce number of items in contents. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw(self): + hat = probability_calculator.Hat(red=5,blue=2) + actual = hat.draw(2) + expected = ['blue', 'red'] + self.assertEqual(actual, expected, 'Expected hat draw to return two random items from hat contents.') + actual = len(hat.contents) + expected = 5 + self.assertEqual(actual, expected, 'Expected hat draw to reduce number of items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `draw` method should behave correctly when the number of balls to extract is bigger than the number of balls in the hat. + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_hat_draw_2(self): + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + actual = hat.draw(20) + expected = ['yellow', 'yellow', 'yellow', 'yellow', 'yellow', 'red', 'green', 'green', 'green', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'blue', 'test'] + self.assertEqual(actual, expected, 'Expected hat draw to return all items from hat contents.') + actual = len(hat.contents) + expected = 0 + self.assertEqual(actual, expected, 'Expected hat draw to leave no items in contents.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +The `experiment` method should return a different probability. + + +```js +({ + test: () => { + pyodide.FS.writeFile("/home/pyodide/probability_calculator.py", code); + pyodide.FS.writeFile( + "/home/pyodide/test_module.py", + ` +import unittest +import probability_calculator +from importlib import reload + +reload(probability_calculator) + +probability_calculator.random.seed(95) +class UnitTests(unittest.TestCase): + maxDiff = None + def test_prob_experiment(self): + hat = probability_calculator.Hat(blue=3,red=2,green=6) + probability = probability_calculator.experiment(hat=hat, expected_balls={"blue":2,"green":1}, num_balls_drawn=4, num_experiments=1000) + actual = probability + expected = 0.272 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + hat = probability_calculator.Hat(yellow=5,red=1,green=3,blue=9,test=1) + probability = probability_calculator.experiment(hat=hat, expected_balls={"yellow":2,"blue":3,"test":1}, num_balls_drawn=20, num_experiments=100) + actual = probability + expected = 1.0 + self.assertAlmostEqual(actual, expected, delta = 0.01, msg = 'Expected experiment method to return a different probability.') + ` + ); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + }, +}); +``` + +# --seed-- + +## --seed-contents-- + +```py +import copy +import random + +class Hat: + pass + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + pass +``` + +# --solutions-- + +```py +import copy +import random + +class Hat: + def __init__(self, **hat): + self.hat = hat + contents = [] + for i in hat: + for j in range(hat[i]): + contents.append(i) + self.contents = contents + + + def draw(self, number): + drawn = [] + if number >= len(self.contents): + drawn.extend(self.contents) + self.contents = [] + else: + for i in range(number): + drawn.append( + self.contents.pop(random.randrange(len(self.contents))) + ) + return drawn + +def experiment(hat, expected_balls, num_balls_drawn, num_experiments): + expected_balls_list = [] + drawn_list = [] + success = 0 + for i in expected_balls: + for j in range(expected_balls[i]): + expected_balls_list.append(i) + for j in range(num_experiments): + hat_copy = copy.deepcopy(hat) + drawn_list.append(hat_copy.draw(num_balls_drawn)) + exp_ball_list_copy = expected_balls_list[:] + for k in range(len(drawn_list[j])): + try: + ind = exp_ball_list_copy.index(drawn_list[j][k]) + exp_ball_list_copy.pop(ind) + except: + continue + if len(exp_ball_list_copy) == 0: + success += 1 + probability = success/num_experiments + return probability +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md new file mode 100644 index 00000000000..05e60f0b74a --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/build-a-time-calculator-project/time-calculator.md @@ -0,0 +1,582 @@ +--- +id: 5e444136903586ffb414c94d +title: Build a Time Calculator Project +challengeType: 23 +forumTopicId: 462360 +dashedName: build-a-time-calculator-project +--- + +# --description-- + +Write a function named `add_time` that takes in two required parameters and one optional parameter: + +- a start time in the 12-hour clock format (ending in AM or PM) +- a duration time that indicates the number of hours and minutes +- (optional) a starting day of the week, case insensitive + +The function should add the duration time to the start time and return the result. + +If the result will be the next day, it should show `(next day)` after the time. If the result will be more than one day later, it should show `(n days later)` after the time, where "n" is the number of days later. + +If the function is given the optional starting day of the week parameter, then the output should display the day of the week of the result. The day of the week in the output should appear after the time and before the number of days later. + +Below are some examples of different cases the function should handle. Pay close attention to the spacing and punctuation of the results. + +```py +add_time('3:00 PM', '3:10') +# Returns: 6:10 PM + +add_time('11:30 AM', '2:32', 'Monday') +# Returns: 2:02 PM, Monday + +add_time('11:43 AM', '00:20') +# Returns: 12:03 PM + +add_time('10:10 PM', '3:30') +# Returns: 1:40 AM (next day) + +add_time('11:43 PM', '24:20', 'tueSday') +# Returns: 12:03 AM, Thursday (2 days later) + +add_time('6:30 PM', '205:12') +# Returns: 7:42 AM (9 days later) +``` + +Do not import any Python libraries. Assume that the start times are valid times. The minutes in the duration time will be a whole number less than 60, but the hour can be any whole number. + +# --hints-- +Calling `add_time('3:30 PM', '2:12')` should return `'5:42 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +import time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period(self): + actual = time_calculator.add_time("3:30 PM", "2:12") + expected = "5:42 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12" to return "5:42 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:55 AM', '3:12')` should return `'3:07 PM'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_different_period(self): + actual = time_calculator.add_time("11:55 AM", "3:12") + expected = "3:07 PM" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:55 AM", "3:12" to return "3:07 PM"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected time to end with `'(next day)'` when it is the next day. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_next_day(self): + actual = time_calculator.add_time("9:15 PM", "5:30") + expected = "2:45 AM (next day)" + self.assertEqual(actual, expected, 'Expected time to end with "(next day)" when it is the next day.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected period to change from `AM` to `PM` at `12:00`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_period_change_at_twelve(self): + actual = time_calculator.add_time("11:40 AM", "0:25") + expected = "12:05 PM" + self.assertEqual(actual, expected, 'Expected period to change from AM to PM at 12:00') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00')` should return `'2:59 AM (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four(self): + actual = time_calculator.add_time("2:59 AM", "24:00") + expected = "2:59 AM (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00" to return "2:59 AM (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05')` should return `'12:04 AM (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later(self): + actual = time_calculator.add_time("11:59 PM", "24:05") + expected = "12:04 AM (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05" to return "12:04 AM (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02')` should return `'6:18 AM (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration(self): + actual = time_calculator.add_time("8:16 PM", "466:02") + expected = "6:18 AM (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02" to return "6:18 AM (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Expected adding `0:00` to return the initial time. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_no_change(self): + actual = time_calculator.add_time("5:01 AM", "0:00") + expected = "5:01 AM" + self.assertEqual(actual, expected, 'Expected adding 0:00 to return initial time.') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('3:30 PM', '2:12', 'Monday')`should return `'5:42 PM, Monday'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_same_period_with_day(self): + actual = time_calculator.add_time("3:30 PM", "2:12", "Monday") + expected = "5:42 PM, Monday" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "3:30 PM", "2:12", "Monday" to return "5:42 PM, Monday"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + + +Calling `add_time('2:59 AM', '24:00', 'saturDay')` should return `'2:59 AM, Sunday (next day)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_twenty_four_with_day(self): + actual = time_calculator.add_time("2:59 AM", "24:00", "saturDay") + expected = "2:59 AM, Sunday (next day)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "2:59 AM", "24:00", "saturDay" to return "2:59 AM, Sunday (next day)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('11:59 PM', '24:05', 'Wednesday')` should return `'12:04 AM, Friday (2 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_two_days_later_with_day(self): + actual = time_calculator.add_time("11:59 PM", "24:05", "Wednesday") + expected = "12:04 AM, Friday (2 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "11:59 PM", "24:05", "Wednesday" to return "12:04 AM, Friday (2 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +Calling `add_time('8:16 PM', '466:02', 'tuesday')`should return `'6:18 AM, Monday (20 days later)'`. + +```js +({ + test: () => { + pyodide.FS.writeFile('/home/pyodide/time_calculator.py', code); + pyodide.FS.writeFile('/home/pyodide/test_module.py', ` +import unittest +time_calculator +from importlib import reload + +reload(time_calculator) + + +class UnitTests(unittest.TestCase): + maxDiff = None + def test_high_duration_with_day(self): + actual = time_calculator.add_time("8:16 PM", "466:02", "tuesday") + expected = "6:18 AM, Monday (20 days later)" + self.assertEqual(actual, expected, 'Expected calling "add_time()" with "8:16 PM", "466:02", "tuesday" to return "6:18 AM, Monday (20 days later)"') + `); + const testCode = ` +from unittest import main +import test_module +from importlib import reload + +reload(test_module) +t = main(module='test_module', exit=False) +t.result.wasSuccessful() +`; + const out = runPython(testCode); + assert(out); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def add_time(start, duration): + + + + + + return new_time +``` + +# --solutions-- + +```py +def add_time(start, duration, day=''): + start_arr = start[0:-3].split(':') + dur_arr = duration.split(':') + tail = '' + # converting to 24h format + if 'AM' in start: + if start_arr[0] == '12': + start_arr[0] = '00' + elif 'PM' in start: + if start_arr[0] == '12': + start_arr[0] = '12' + else: + start_arr[0] = f'{int(start_arr[0]) + 12}' + + # adding minutes + sum_m = int(start_arr[1]) + int(dur_arr[1]) + if sum_m > 59: + + if (sum_m - 60 * (sum_m//60)) < 10: + mins = f'0{(sum_m - 60 * (sum_m//60))}' + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + + else: + mins = sum_m - 60 * (sum_m//60) + dur_arr[0] = int(dur_arr[0]) + sum_m//60 + else: + if sum_m < 10: + mins = f'0{sum_m}' + else: + mins = sum_m + + #adding hours + sum_h = int(start_arr[0]) + int(dur_arr[0]) + if sum_h < 24: + hours= sum_h + #time_24 = f'{hours}:{mins}' + else: + days_after = sum_h//24 + if days_after == 1: + hours = sum_h - 24 + tail = ' (next day)' + else: + hours = sum_h - 24 * days_after + tail = f' ({days_after} days later)' + + #converting back to AM/PM + if hours == 0: + hours = 12 + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + elif hours < 12: + time = f'{hours}:{mins} AM' + final_time = f'{time}{tail}' + else: + if hours > 12: + hours = hours - 12 + time = f'{hours}:{mins} PM' + final_time = f'{time}{tail}' + + #days of the week + week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] + if day: + day = day.capitalize() + if not tail: + final_time = f'{time}, {day}' + elif tail == ' (next day)': + index = week.index(day) + 1 + if index == 7: + index = 0 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + elif tail: + index = (week.index(day) + days_after) % 7 + week_day = f', {week[index]}' + final_time = f'{time}{week_day}{tail}' + + + print('\n') + print(final_time) + print('\n') + return final_time + +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md new file mode 100644 index 00000000000..4f112fd73c5 --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/build-an-arithmetic-formatter-project/arithmetic-formatter.md @@ -0,0 +1,248 @@ +--- +id: 5e44412c903586ffb414c94c +title: Build an Arithmetic Formatter Project +challengeType: 23 +forumTopicId: 462359 +dashedName: build-an-arithmetic-formatter-project +--- + +# --description-- + +Students in primary school often arrange arithmetic problems vertically to make them easier to solve. For example, "235 + 52" becomes: + +```py + 235 ++ 52 +----- +``` + +Finish the `arithmetic_arranger` function that receives a list of strings which are arithmetic problems, and returns the problems arranged vertically and side-by-side. The function should optionally take a second argument. When the second argument is set to `True`, the answers should be displayed. + +## Example + +Function Call: + +```py +arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"]) +``` + +Output: + +```py + 32 3801 45 123 ++ 698 - 2 + 43 + 49 +----- ------ ---- ----- +``` + +Function Call: + +```py +arithmetic_arranger(["32 + 8", "1 - 3801", "9999 + 9999", "523 - 49"], True) +``` + +Output: + +```py + 32 1 9999 523 ++ 8 - 3801 + 9999 - 49 +---- ------ ------ ----- + 40 -3800 19998 474 +``` + +## Rules + +The function will return the correct conversion if the supplied problems are properly formatted, otherwise, it will **return** a **string** that describes an error that is meaningful to the user. + +- Situations that will return an error: + - If there are **too many problems** supplied to the function. The limit is **five**, anything more will return: `'Error: Too many problems.'` + - The appropriate operators the function will accept are **addition** and **subtraction**. Multiplication and division will return an error. Other operators not mentioned in this bullet point will not need to be tested. The error returned will be: `"Error: Operator must be '+' or '-'."` + - Each number (operand) should only contain digits. Otherwise, the function will return: `'Error: Numbers must only contain digits.'` + - Each operand (aka number on each side of the operator) has a max of four digits in width. Otherwise, the error string returned will be: `'Error: Numbers cannot be more than four digits.'` +- If the user supplied the correct format of problems, the conversion you return will follow these rules: + - There should be a single space between the operator and the longest of the two operands, the operator will be on the same line as the second operand, both operands will be in the same order as provided (the first will be the top one and the second will be the bottom). + - Numbers should be right-aligned. + - There should be four spaces between each problem. + - There should be dashes at the bottom of each problem. The dashes should run along the entire length of each problem individually. (The example above shows what this should look like.) + +# --hints-- + +`arithmetic_arranger(["3801 - 2", "123 + 49"])` should return `3801 123\n- 2 + 49\n------ -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3801 - 2", "123 + 49"]), ' 3801 123\\n- 2 + 49\\n------ -----')`); + } +}) +``` + +`arithmetic_arranger(["1 + 2", "1 - 9380"])` should return `1 1\n+ 2 - 9380\n--- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["1 + 2", "1 - 9380"]), ' 1 1\\n+ 2 - 9380\\n--- ------')`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `3 3801 45 123\n+ 855 - 2 + 43 + 49\n----- ------ ---- -----`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]), ' 3 3801 45 123\\n+ 855 - 2 + 43 + 49\\n----- ------ ---- -----')`); + } +}) +``` + +`arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"])` should return `11 3801 1 123 1\n+ 4 - 2999 + 2 + 49 - 9380\n---- ------ --- ----- ------`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"]), ' 11 3801 1 123 1\\n+ 4 - 2999 + 2 + 49 - 9380\\n---- ------ --- ----- ------')`); + } +}) +``` + +`arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"])` should return `'Error: Too many problems.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["44 + 815", "909 - 2", "45 + 43", "123 + 49", "888 + 40", "653 + 87"]), 'Error: Too many problems.')`); + } +}) +``` + +`arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"])` should return `"Error: Operator must be '+' or '-'."`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 / 855", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Operator must be '+' or '-'.")`); + } +}) +``` + +`arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers cannot be more than four digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["24 + 85215", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers cannot be more than four digits.")`); + } +}) +``` + +`arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"])` should return `'Error: Numbers must only contain digits.'`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["98 + 3g5", "3801 - 2", "45 + 43", "123 + 49"]), "Error: Numbers must only contain digits.")`); + } +}) +``` + +`arithmetic_arranger(["3 + 855", "988 + 40"], True)` should return `3 988\n+ 855 + 40\n----- -----\n 858 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["3 + 855", "988 + 40"], True), " 3 988\\n+ 855 + 40\\n----- -----\\n 858 1028")`); + } +}) +``` + +`arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True)` should return `32 1 45 123 988\n- 698 - 3801 + 43 + 49 + 40\n----- ------ ---- ----- -----\n -666 -3800 88 172 1028`. + +```js +({ + test: () => { + runPython(` +from unittest import TestCase + +TestCase().assertEqual(arithmetic_arranger(["32 - 698", "1 - 3801", "45 + 43", "123 + 49", "988 + 40"], True), " 32 1 45 123 988\\n- 698 - 3801 + 43 + 49 + 40\\n----- ------ ---- ----- -----\\n -666 -3800 88 172 1028")`); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def arithmetic_arranger(problems, show_answers=False): + + return problems + +print(f'\n{arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"])}') +``` + +# --solutions-- + +```py +def arithmetic_arranger(problems, result=False): + + lin1 = "" + lin2 = "" + lin3 = "" + lin4 = "" + + if len(problems) > 5: + return 'Error: Too many problems.' + for problem in problems: + [num1, sym, num2] = problem.split() + sign = ['+', '-'] + if sym not in sign: + return ("Error: Operator must be '+' or '-'.") + if len(num1) > 4 or len(num2) > 4: + return ("Error: Numbers cannot be more than four digits.") + if not num1.isnumeric() or not num2.isnumeric(): + return ("Error: Numbers must only contain digits.") + + lin1 += " " + num1 + " " if len(num1) >= len( + num2) else " " * (len(num2) + 2 - len(num1)) + num1 + " " + lin2 += sym + " " + num2 + " " if len(num2) >= len( + num1) else sym + " " * (len(num1) - len(num2) + 1) + num2 + " " + nmax = (len(num1) + 2) if len(num1) >= len(num2) else (len(num2) + 2) + lin3 += "-" * nmax + " " + op = int(num1) + int(num2) if sym == "+" else int(num1) - int(num2) + lin4 += (" " * (nmax - len(str(op)))) + str(op) + " " + + arranged_problems = lin1.rstrip() + "\n" + lin2.rstrip( + ) + "\n" + lin3.rstrip() + if result: + arranged_problems += "\n" + lin4.rstrip() + + return arranged_problems +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md index 0aaa847bc37..1d2ee14e0d1 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65576ff7888f9e96f52a4be1.md @@ -23,7 +23,7 @@ my_dict = { Додайте нову пару ключ-значення до словника `copper`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 1 `)) }) @@ -32,7 +32,7 @@ my_dict = { Ви повинні мати ключ `species` зі значенням `guinea pig` в межах словника `copper`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig"} `)) }) diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md index 577930f1274..f84d10b6a10 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557709b0aee699a6a00528c.md @@ -14,7 +14,7 @@ dashedName: step-12 Словник повинен мати ключ `A`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "A" in my_graph `)) }) @@ -23,7 +23,7 @@ dashedName: step-12 Ключ `A` повинен мати значення `B`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -32,7 +32,7 @@ dashedName: step-12 Словник повинен мати ключ `B`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` "B" in my_graph `)) }) @@ -41,7 +41,7 @@ dashedName: step-12 Ключ `B` повинен мати значення `A`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["B"] == "A" `)) }) @@ -50,7 +50,7 @@ dashedName: step-12 Словник повинен мати два ключі. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph) == 2 `)) }) diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md index dae024498f8..d14b0a87454 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557712d77ce2d9bd7e63afd.md @@ -16,7 +16,7 @@ dashedName: step-13 Словник повинен мати 3 ключі під назвами `A`, `B` та `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C"] len(my_graph) == 3 and all(key in my_graph for key in key_list) `)) @@ -26,7 +26,7 @@ dashedName: step-13 Значенням `my_graph["A"]` має бути вузол `B`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["A"] == "B" `)) }) @@ -35,7 +35,7 @@ dashedName: step-13 `my_graph["B"]` має бути списком. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -44,7 +44,7 @@ dashedName: step-13 Значення `my_graph["B"]` має бути списком, що містить два інші вузли. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -53,7 +53,7 @@ dashedName: step-13 Значення `my_graph["C"]` має бути приєднаним вузлом. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` my_graph["C"] == "B" `)) }) diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md index 68f4151305b..104a9650b7e 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557716aadbd2d9c42c0e69a.md @@ -14,7 +14,7 @@ dashedName: step-14 Словник повинен мати 4 ключі під назвами `A`, `B`, `C` та `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -24,7 +24,7 @@ dashedName: step-14 `my_graph["A"]` має бути списком. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list `)) }) @@ -33,7 +33,7 @@ dashedName: step-14 `my_graph["A"]` має бути списком, що містить `B` та `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["A"]) == 2 and "B" in my_graph["A"] and "D" in my_graph["A"] `)) }) @@ -42,7 +42,7 @@ dashedName: step-14 `my_graph["B"]` має бути списком. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list `)) }) @@ -51,7 +51,7 @@ dashedName: step-14 `my_graph["B"]` має бути списком, що містить `A` та `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["B"]) == 2 and "A" in my_graph["B"] and "C" in my_graph["B"] `)) }) @@ -60,7 +60,7 @@ dashedName: step-14 `my_graph["C"]` має бути списком. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list `)) }) @@ -69,7 +69,7 @@ dashedName: step-14 `my_graph["C"]` має бути списком, що містить `B` та `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["C"]) == 2 and "B" in my_graph["C"] and "D" in my_graph["C"] `)) }) @@ -78,7 +78,7 @@ dashedName: step-14 `my_graph["D"]` має бути списком. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list `)) }) @@ -87,7 +87,7 @@ dashedName: step-14 `my_graph["D"]` має бути списком, що містить `A` та `C`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(my_graph["D"]) == 2 and "A" in my_graph["D"] and "C" in my_graph["D"] `)) }) diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md index 9282a327ba2..28be7ff578a 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655771d889132f9ccd341060.md @@ -27,7 +27,7 @@ dashedName: step-15 Словник повинен мати 4 ключі під назвами `A`, `B`, `C` та `D`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` key_list = ["A", "B", "C", "D"] len(my_graph) == 4 and all(key in my_graph for key in key_list) `)) @@ -37,7 +37,7 @@ dashedName: step-15 `my_graph["A"]` має бути списком кортежів. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["A"]) is list and all(type(i) is tuple for i in my_graph["A"]) `)) }) @@ -46,7 +46,7 @@ dashedName: step-15 `my_graph["A"]` має бути списком кортежів, де першим елементом кортежу є приєднаний вузол, а другим — відстань. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 3), ("D", 1)] len(my_graph["A"]) == 2 and all(t in my_graph["A"] for t in tuples) `)) diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md index 6a9c330469f..3cecca7333d 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65577236b056379d5dbc7000.md @@ -16,7 +16,7 @@ dashedName: step-18 Ви повинні мати функцію `shortest_path`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect inspect.isfunction(shortest_path) `)) diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md index c114dab8600..097f8986ed4 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/655773b0591c5f9f4045883e.md @@ -16,7 +16,7 @@ dashedName: step-19 Функція має приймати `graph` та `start` як параметри (в такому ж порядку). ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == '(graph, start)' diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md index b75fc6d6992..cbf4814f77a 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6557924d47c325bf27afbe51.md @@ -22,7 +22,7 @@ dashedName: step-48 Параметр `target` повинен мати значення за замовчуванням у вигляді порожнього рядка. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` import inspect sig = str(inspect.signature(shortest_path)) sig == "(graph, start, target='')" diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md index dcd7a592733..4f771557854 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6566195b0a021bb660b2b4b1.md @@ -14,7 +14,7 @@ dashedName: step-16 `my_graph["B"]` має бути списком кортежів. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["B"]) is list and all(type(i) is tuple for i in my_graph["B"]) `)) }) @@ -23,7 +23,7 @@ dashedName: step-16 `my_graph["B"]` має бути списком кортежів, де першим елементом кортежу є приєднаний вузол, а другим — відстань. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 3), ("C", 4)] len(my_graph["B"]) == 2 and all(t in my_graph["B"] for t in tuples) `)) diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md index b4202a4f9ed..5c738431097 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65661b72d6745ebec6a96923.md @@ -14,7 +14,7 @@ dashedName: step-17 `my_graph["C"]` має бути списком кортежів. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["C"]) is list and all(type(i) is tuple for i in my_graph["C"]) `)) }) @@ -23,7 +23,7 @@ dashedName: step-17 `my_graph["C"]` має бути списком кортежів, де першим елементом кортежу є приєднаний вузол, а другим — відстань. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("B", 4), ("D", 7)] len(my_graph["C"]) == 2 and all(t in my_graph["C"] for t in tuples) `)) @@ -33,7 +33,7 @@ dashedName: step-17 `my_graph["D"]` має бути списком кортежів. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph["D"]) is list and all(type(i) is tuple for i in my_graph["D"]) `)) }) @@ -42,7 +42,7 @@ dashedName: step-17 `my_graph["D"]` має бути списком кортежів, де першим елементом кортежу є приєднаний вузол, а другим — відстань. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` tuples = [("A", 1), ("C", 7)] len(my_graph["D"]) == 2 and all(t in my_graph["D"] for t in tuples) `)) diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md index 01f270d44c4..626474385bd 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65774ae7c3eee66fe79b9459.md @@ -25,7 +25,7 @@ dashedName: step-53 Змініть `my_graph` на наданий граф. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` g = { 'A': [('B', 5), ('C', 3), ('E', 11)], 'B': [('A', 5), ('C', 1), ('F', 2)], diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md index 50fd07a24d9..90b5644b82c 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/65789506b30453080f77470c.md @@ -27,7 +27,7 @@ dashedName: step-1 Змінна `copper` повинна мати значення порожнього словника. Використайте для цього пару фігурних дужок. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {} `)) }) diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md index fe18c77a4c3..020abf9f6c1 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b13757611e2825beb8a5.md @@ -16,7 +16,7 @@ dashedName: step-3 Додайте нову пару ключ-значення до словника `copper`. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` len(copper) == 2 `)) }) @@ -25,7 +25,7 @@ dashedName: step-3 Ви повинні мати ключ `age` зі значенням `2` одразу після `'species': 'guinea pig'` в межах словника `copper`. Не забудьте про кому. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md index 8e39e59afe3..ae564de1ac6 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6578b57361f2f132a02e2a18.md @@ -25,7 +25,7 @@ my_dict['name'] # 'Michael' Не змінюйте словник. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` copper == {"species": "guinea pig", "age": 2} `)) }) diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md index 3d484a24cdf..2c529cad61c 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-algorithm-design-by-building-a-shortest-path-algorithm/6579dd49fa8a8e1fd06b85a9.md @@ -24,7 +24,7 @@ dashedName: step-11 Змінна `my_graph` має бути словником. ```js -({ test: () => assert(__pyodide.runPython(` +({ test: () => assert(runPython(` type(my_graph) is dict `)) }) diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md index 5beb340b738..35564c4eb1d 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6564a9fe51964c229d5b7f4c.md @@ -16,7 +16,7 @@ dashedName: step-2 ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('merge_sort'))) == '(array)' + str(inspect.signature(merge_sort)) == '(array)' `)) }) ``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md index bef7cbe1372..509c3b49074 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/6569b743630ee592a65a7e2f.md @@ -19,13 +19,9 @@ dashedName: step-26 ```js ({ - test: () => { - const transformedCode = code.replace(/\r/g, ""); - const merge_sort = __helpers.python.getDef("\n" + transformedCode, "merge_sort"); - const { function_body } = merge_sort; - - assert.match(function_body, /if\s+len\(\s*array\s*\)\s*<=\s*1:\s*pass/); - } + test: () => assert(runPython(` + _Node(_code).find_function("merge_sort").find_ifs()[0].find_conditions()[0].is_equivalent("len(array) <= 1") + `)) }) ``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md index 3bdaca83ae6..ef5a0e30c73 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-data-structures-by-building-the-merge-sort-algorithm/657f59751d5a5c9b069ae0f3.md @@ -22,13 +22,11 @@ dashedName: step-28 Інструкція `if` повинна перевіряти, чи `__name__` має значення `'__main__'`. ```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:/); -``` - -Тіло інструкції `if` повинне містити ключове слово `pass`. - -```js -assert.match(code, /if\s+__name__\s*==\s*("|')__main__\1\s*:\s*[^}]*\bpass\b/); +({ + test: () => assert(runPython(` + _Node(_code).find_ifs()[0].find_conditions()[0].is_equivalent("__name__ == '__main__'") + `)) +}) ``` # --seed-- diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md index fc85513dbfa..c396ce9f4d1 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8b1faf9c60304ca8a9b6.md @@ -25,7 +25,6 @@ dashedName: step-1 ```js ({ test: () => assert(runPython(` - rods = __locals.get("rods") rods == {} `)) }) diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md index 54e899d2b12..dfca2195ddc 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc8ea01436383a88256d7f.md @@ -19,8 +19,7 @@ dashedName: step-3 ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - type(a['A']) is range + type(rods['A']) is range `)) }) ``` @@ -29,8 +28,7 @@ dashedName: step-3 ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == range(3, 0, -1) + rods['A'] == range(3, 0, -1) `)) }) ``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md index 11ec0fe887d..e3830c0d7f0 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc90949ff85e3b37be40d0.md @@ -17,8 +17,7 @@ dashedName: step-5 ```js ({ test: () => assert(runPython(` - a = __locals.get('rods') - a['A'] == list(range(3, 0, -1)) + rods['A'] == list(range(3, 0, -1)) `)) }) ``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md index ff474afc8d4..4cd2441e79f 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc916138dbe03bdfe6cec6.md @@ -23,7 +23,7 @@ dashedName: step-7 ({ test: () => { assert(runPython(` import inspect - inspect.isfunction(__locals.get('move')) + inspect.isfunction(move) `)) } }) diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md index 42359fb80a7..a05d4eaee70 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64dc92a9718fb53ca3d1bad7.md @@ -23,9 +23,8 @@ dashedName: step-9 ```js ({ test: () => { - assert(runPython(` - a = __locals.get('NUMBER_OF_DISKS') - __locals.get('number_of_moves') == 2**a -1 + assert(runPython(` + number_of_moves == 2**NUMBER_OF_DISKS -1 `)) } }) ``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md index f231f471ac3..ada3c0e75e3 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd280d69fa818ca782d50.md @@ -16,7 +16,7 @@ dashedName: step-29 ```js ({ test: () => assert(runPython(` import inspect - inspect.isfunction(__locals.get('make_allowed_move')) + inspect.isfunction(make_allowed_move) `)) }) ``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md index 8a53ad00a31..8edca08a671 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64ddd4fbb4b598199acf5ec5.md @@ -16,7 +16,7 @@ dashedName: step-30 ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('make_allowed_move'))) == '(rod1, rod2)' + str(inspect.signature(make_allowed_move)) == '(rod1, rod2)' `)) }) ``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md index 1e99ef6ae90..ebfeae5af9d 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de1469fccce61940f498c4.md @@ -14,16 +14,14 @@ dashedName: step-2 Словник `rods` повинен мати ключ `'A'`. ```js -({ test: () => assert(runPython(`'A' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'A' in rods`)) }) ``` `rods['A']` має бути порожнім списком. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['A'] == [] + rods['A'] == [] `)) }) ``` @@ -31,16 +29,14 @@ dashedName: step-2 Словник `rods` повинен мати ключ `'B'`. ```js -({ test: () => assert(runPython(`'B' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'B' in rods`)) }) ``` `rods['B']` має бути порожнім списком. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['B'] == [] + rods['B'] == [] `)) }) ``` @@ -48,16 +44,14 @@ dashedName: step-2 Словник `rods` повинен мати ключ `'C'`. ```js -({ test: () => assert(runPython(`'C' in __locals.get("rods")`)) }) - +({ test: () => assert(runPython(`'C' in rods`)) }) ``` `rods['C']` має бути порожнім списком. ```js ({ test: () => assert(runPython(` - a = __locals.get("rods") - a['C'] == [] + rods['C'] == [] `)) }) ``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md index 76d2a10d5b1..fb3bcc20af8 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/64de4bccf5becb208a48ca97.md @@ -22,7 +22,7 @@ dashedName: step-13 ```js ({ test: () => assert(runPython(` import inspect - str(inspect.signature(__locals.get('move'))) == '(n, source, auxiliary, target)' + str(inspect.signature(move)) == '(n, source, auxiliary, target)' `)) }) ``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md index c07e6968dfd..9e97791768e 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-recursion-by-solving-the-tower-of-hanoi-puzzle/657b6a4a49faec5c600287ba.md @@ -17,9 +17,8 @@ dashedName: step-55 ```js ({ test: () => assert(runPython(` - hanoi = __locals.get("move") a, b, c = [3, 2, 1], [], [] - hanoi(3, a, b, c) + move(3, a, b, c) a == [] and b == [] and c == [3, 2, 1] `)) }) diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md index ee4e0be6251..1d35b6f1501 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6554d25dc5ceaa354307a77e.md @@ -23,9 +23,8 @@ dashedName: step-68 ```js ({ test: () => assert(runPython(` - import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + import inspect + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction)' `)) }) diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md index d1644e412cd..97a7c09a1e6 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555231eac4d9f19bd3d44b5.md @@ -24,8 +24,7 @@ def foo(): ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - inspect.isfunction(f) + inspect.isfunction(encrypt) `)) }) ``` @@ -35,8 +34,7 @@ def foo(): ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("encrypt") - sig = inspect.signature(f) + sig = inspect.signature(encrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md index 25b049c4012..a8671362711 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/65552a9593755e1fb2f5ab50.md @@ -16,8 +16,7 @@ dashedName: step-83 ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - inspect.isfunction(f) + inspect.isfunction(decrypt) `)) }) ``` @@ -27,8 +26,7 @@ dashedName: step-83 ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("decrypt") - sig = inspect.signature(f) + sig = inspect.signature(decrypt) str(sig) == "(message, key)" `)) }) diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md index 17656c361aa..e8b5dbfdbb7 100644 --- a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/6555d6e12c95701172b55709.md @@ -23,8 +23,7 @@ def foo(a, b, c=value): ```js ({ test: () => assert(runPython(` import inspect - f = __locals.get("vigenere") - sig = str(inspect.signature(f)) + sig = str(inspect.signature(vigenere)) sig == '(message, key, direction=1)' `)) }) diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md new file mode 100644 index 00000000000..733f024fa29 --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef181dad3d96b14a21a03e.md @@ -0,0 +1,39 @@ +--- +id: 65ef181dad3d96b14a21a03e +title: Step 1 +challengeType: 20 +dashedName: step-1 +--- + +# --description-- + +In this project, you will find the approximate square root of a given number using the bisection method. + +The bisection method is a technique for finding the roots of a real-valued function. It works by narrowing down an interval where the square root lies until it converges to a value within a specified tolerance. + +Begin by creating a function named `square_root_bisection`. Leave the parameters empty for now. + +# --hints-- + +You should define the function `square_root_bisection` with no parameters. + +```js +({ + test: () => { + assert(runPython(` + import inspect + inspect.isfunction(square_root_bisection) + `)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md new file mode 100644 index 00000000000..f5091e5a2c6 --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef190c6b51e9b5a5f7ed29.md @@ -0,0 +1,38 @@ +--- +id: 65ef190c6b51e9b5a5f7ed29 +title: Step 2 +challengeType: 20 +dashedName: step-2 +--- + +# --description-- + +Give the `square_root_bisection` method the following parameters: + +- `square_target`: The number for which you want to find the square root. +- `tolerance` (optional): The acceptable difference between the square of the approximate root value and the actual target value (default is `1e-7`). The tolerance `1e-7` implies that the solution will be accurate to within `0.0000001` of the true value and is a good default choice that balances accuracy and performance. +- `max_iterations` (optional): The maximum number of iterations to perform (default is `100`). If the method doesn't converge within this limit, you'll assume the solution is not found. + +# --hints-- + +Your function should have these parameters: `square_target`, `tolerance = 1e-7`, and `max_iterations = 100`. The order matters. + +```js +({ + test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").has_args("square_target, tolerance=1e-7, max_iterations=100")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py + +--fcc-editable-region-- +def square_root_bisection(): + pass +--fcc-editable-region-- + +``` + diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md new file mode 100644 index 00000000000..77628582774 --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19425d1b27b6c930bae6.md @@ -0,0 +1,46 @@ +--- +id: 65ef19425d1b27b6c930bae6 +title: Step 3 +challengeType: 20 +dashedName: step-3 +--- + +# --description-- + +If the number for which you want to find the square root is negative, the code should raise an error as the square root of a negative number is not defined in real numbers. + +Remove the `pass` statement and create an `if` statement to check if `square_target` is less than `0`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").has_pass()`)) + } +}) +``` + +You should create an `if` statement to check if `square_target < 0`. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_if("square_target < 0").is_empty()`)) + + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance = 1e-7, max_iterations = 100): + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md new file mode 100644 index 00000000000..20f407dfd2a --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef198fde24dfb7ff675b42.md @@ -0,0 +1,46 @@ +--- +id: 65ef198fde24dfb7ff675b42 +title: Step 4 +challengeType: 20 +dashedName: step-4 +--- + +# --description-- + +If the `square_target` is less than `0`, raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'`. Don't forget to remove the `pass` keyword. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should raise a `ValueError` with the message `'Square root of negative number is not defined in real numbers'` inside the `if` body. + +```js +({ + test: () => { + + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[0].find_bodies()[0].is_equivalent("raise ValueError('Square root of negative number is not defined in real numbers')")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md new file mode 100644 index 00000000000..f31f83a0ed3 --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef19ec318e2fb9066381e3.md @@ -0,0 +1,38 @@ +--- +id: 65ef19ec318e2fb9066381e3 +title: Step 5 +challengeType: 20 +dashedName: step-5 +--- + +# --description-- + +You'll create separate cases for when `square_target` is `0` or `1`. + +Begin by creating an `if` statement to check if `square_target` is equal to `1`. + +# --hints-- + +You should create an `if` statement to check that `square_target == 1`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[0].is_equivalent("square_target == 1")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md new file mode 100644 index 00000000000..927a215705a --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a1fcb527bba0ca82ccf.md @@ -0,0 +1,51 @@ +--- +id: 65ef1a1fcb527bba0ca82ccf +title: Step 6 +challengeType: 20 +dashedName: step-6 +--- + +# --description-- + +If the `square_target` is equal to `1`, declare a variable `root` and assign it the value `1` . Also, print the message `'The square root of {square_target} is 1'`. Remember to format the message using an f-string. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].has_pass()`)) + } +}) +``` + +You should assign the value `1` to the `root` variable and print the message `'The square root of {square_target} is 1'` inside the `if` body. + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[0].is_equivalent("root = 1\\nprint(f'The square root of {square_target} is 1')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md new file mode 100644 index 00000000000..9ba5f5b573f --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a50049cf9bada13266f.md @@ -0,0 +1,55 @@ +--- +id: 65ef1a50049cf9bada13266f +title: Step 7 +challengeType: 20 +dashedName: step-7 +--- + +# --description-- + +Create an `elif` statement to check if `square_target` is equal to `0`. If it is, assign the value `0` to the `root` variable. Also, print the message `'The square root of {square_target} is 0'`. Remember to format the message using an f-string. + +# --hints-- + +You should have an `elif` statement to check the condition `square_target == 0`. + + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[1].is_equivalent("square_target == 0")`)); + } +}) + +``` + +You should assign the value `0` to the `root` variable and pass the argument `f'The square root of {square_target} is 0'` to a `print` call. + + +```js + +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[1].is_equivalent("root = 0\\nprint(f'The square root of {square_target} is 0')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +--fcc-editable-region-- +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md new file mode 100644 index 00000000000..0fb10817783 --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1a720d6e65bbb0d22463.md @@ -0,0 +1,45 @@ +--- +id: 65ef1a720d6e65bbb0d22463 +title: Step 8 +challengeType: 20 +dashedName: step-8 +--- + +# --description-- +Next, you are going to work on the cases where the `square_target` is a positive number apart from `1` or `0`. + +Create an `else` clause to handle these cases. + +# --hints-- + +Create an `else` clause and do not forget to add a `pass` keyword. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_conditions()[2] == _Node()`)) + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md new file mode 100644 index 00000000000..8f10c9990f1 --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1aacca094bbcc2e2a3c8.md @@ -0,0 +1,73 @@ +--- +id: 65ef1aacca094bbcc2e2a3c8 +title: Step 9 +challengeType: 20 +dashedName: step-9 +--- + +# --description-- + +In Python, the `max()` function returns the largest of the input values. + +```python +max(1, 2, 3) # Output: 3 +``` + +The variables `low` and `high` will be used to define the initial interval where the square root lies. + +Inside the `else` clause, initialize the `low` variable to `0` and the `high` variable to be the maximum of either `1` or `square_target` as the square root of a number is always less than or equal to the number itself. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].has_pass()`)) + } +}) +``` + +You should declare a variable `low` and assign it `0`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("low").is_equivalent("low = 0")`)); } +}) + +``` + +You should declare a variable `high` and use the `max()` function to assign it the maximum value between `1` and `square_target`. + +```js + +({ test: () => assert(runPython(` +node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_variable("high") +values = ["high = max(1, square_target)", "high = max(square_target, 1)"] +any(node.is_equivalent(val) for val in values) +`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + pass +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md new file mode 100644 index 00000000000..6711973a758 --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1afca9a8f6be0d4150ba.md @@ -0,0 +1,46 @@ +--- +id: 65ef1afca9a8f6be0d4150ba +title: Step 10 +challengeType: 20 +dashedName: step-10 +--- + +# --description-- + +Set the value of `root` to `None` as at this point, you don't have an approximate value yet. + +# --hints-- + +The value of `root` should be `None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].is_equivalent("low = 0\\nhigh = max(1, square_target)\\nroot = None")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') +--fcc-editable-region-- + else: + low = 0 + high = max(1, square_target) + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md new file mode 100644 index 00000000000..69406d9fee2 --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1be2b958cabf712296cd.md @@ -0,0 +1,51 @@ +--- +id: 65ef1be2b958cabf712296cd +title: Step 11 +challengeType: 20 +dashedName: step-11 +--- + +# --description-- + +Now you'll repeatedly narrow down the interval by finding the midpoint of the current interval and comparing the square of the midpoint with the target value. + +For that, inside the `else` block, create a `for` loop that runs up to `max_iterations` times. + +# --hints-- + +You should create a `for` loop to iterate over `range(max_iterations)`. Use `_` as the loop variable. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].is_equivalent("for _ in range(max_iterations):\\n pass")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md new file mode 100644 index 00000000000..e5efb88bafc --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c0a03fcabc04ded7e69.md @@ -0,0 +1,78 @@ +--- +id: 65ef1c0a03fcabc04ded7e69 +title: Step 12 +challengeType: 20 +dashedName: step-12 +--- + +# --description-- + +Inside the for loop, calculate the midpoint of the interval ranging from `low` to `high`. Assign this value to a variable `mid`. + +Also, calculate the square of the midpoint (`mid`) and store it in the variable `square_mid`. + +# --hints-- + +You should remove the `pass` keyword. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].has_pass()`)) + + } + +}) + +``` + +You should declare a variable `mid` and assign it `(low + high) / 2` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(` + node = _Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("mid") + values = ["mid = (low + high) / 2", "mid = (high + low) / 2"] + any(node.is_equivalent(val) for val in values) + `)) + + } + +}) +``` + +You should declare a variable `square_mid` and assign it `mid**2` inside the body of the for loop. + +```js +({ test: () => assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_bodies()[0].find_variable("square_mid").is_equivalent("square_mid = mid**2")`)) }) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md new file mode 100644 index 00000000000..f365f00475d --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1c34a541afc12dbb849d.md @@ -0,0 +1,53 @@ +--- +id: 65ef1c34a541afc12dbb849d +title: Step 13 +challengeType: 20 +dashedName: step-13 +--- + +# --description-- + +The `abs()` function returns the absolute value of a number, which is always positive, regardless of the number sign. You will use it to check that the estimated square root is close enough to the actual value. + +Now, create an `if` statement to check if the absolute value of the difference between `square_mid` and `square_target` is within the specified `tolerance`. + +# --hints-- + +You should have an `if` statement with the condition `abs(square_mid - square_target) < tolerance:` inside the body of the `for` loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[0].is_equivalent("abs(square_mid - square_target) < tolerance")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + +--fcc-editable-region-- + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md new file mode 100644 index 00000000000..7c84ec9d7fe --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cb031de30c2cde64c12.md @@ -0,0 +1,68 @@ +--- +id: 65ef1cb031de30c2cde64c12 +title: Step 14 +challengeType: 20 +dashedName: step-14 +--- + +# --description-- + +If the difference is within the specified `tolerance`, set the value of `root` to `mid` and break out of the loop. + +# --hints-- + +You should remove the existing `pass` statement. + +```js +({ + test: () => + { + assert.isFalse(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].has_pass()`)) + } + +}) + +``` + +You should assign the value of `mid` to `root` and break out of the loop. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[0].is_equivalent("root = mid\\nbreak")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + pass + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md new file mode 100644 index 00000000000..18a6767deab --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1cda150a59c3b8306944.md @@ -0,0 +1,71 @@ +--- +id: 65ef1cda150a59c3b8306944 +title: Step 15 +challengeType: 20 +dashedName: step-15 +--- + +# --description-- + +If the difference is not within the specified `tolerance`, create an `elif` statement to check if `square_mid` is less than `square_target`. + +Assign the value of `mid` to `low` as the square root would now lie between `low` and `mid`. + +# --hints-- + +You should create an `elif` statement that checks if `square_mid < square_target`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[1].is_equivalent("square_mid < square_target")`)) + + } + +}) +``` + +You should assign the value of `mid` to `low`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[1].is_equivalent("low = mid")`)) + } + +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + +--fcc-editable-region-- + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md new file mode 100644 index 00000000000..06598491f2e --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d104c2be9c4d8e22075.md @@ -0,0 +1,70 @@ +--- +id: 65ef1d104c2be9c4d8e22075 +title: Step 16 +challengeType: 20 +dashedName: step-16 +--- + +# --description-- + +If both the `if` and `elif` conditions are not met, the value of `mid` would be greater than `square_target`. In this case, create an `else` clause and assign the value of `mid` to `high`. + +# --hints-- + +You should have an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_conditions()[2]== _Node()`)); + } +}) + +``` + +You should assign the value of `mid` to `high` in the `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_for_loops()[0].find_ifs()[0].find_bodies()[2].is_equivalent("high = mid")`)); + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + +--fcc-editable-region-- + elif square_mid < square_target: + low = mid + +--fcc-editable-region-- +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md new file mode 100644 index 00000000000..45e3e9987a8 --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d5e3d2927c5e0f4997b.md @@ -0,0 +1,76 @@ +--- +id: 65ef1d5e3d2927c5e0f4997b +title: Step 17 +challengeType: 20 +dashedName: step-17 +--- + +# --description-- + +Outside the for loop, create an `if` statement to check if the value of `root` is still `None`. If it is, print the message `'Failed to converge within {max_iterations} iterations.'`. Remember to format the message using an f-string. + +# --hints-- + +You should create an `if` statement that checks if `root is None`. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[0].is_equivalent("root is None")`)); + + } +}) +``` + +You should pass the argument `f'Failed to converge within {max_iterations} iterations.'` to the `print` function. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].is_equivalent("if root is None:\\n print(f'Failed to converge within {max_iterations} iterations.')")`)); + + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md new file mode 100644 index 00000000000..ffe75554dd8 --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1d924ff2e5c7031c6ce8.md @@ -0,0 +1,77 @@ +--- +id: 65ef1d924ff2e5c7031c6ce8 +title: Step 18 +challengeType: 20 +dashedName: step-18 +--- + +# --description-- + +Create an `else` clause to handle the case where the value of `root` is not `None`, indicating that a root hass been found. If it is not `None`, print the message `'The square root of {square_target} is approximately {root}'`. Remember to format using an f-string. + +# --hints-- + +You should create an `else` clause. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_conditions()[1] == _Node()`)); + } +}) + +``` + +You should print `f'The square root of {square_target} is approximately {root}'` within the `else` body. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_function("square_root_bisection").find_ifs()[1].find_bodies()[2].find_ifs()[0].find_bodies()[1].is_equivalent("print(f'The square root of {square_target} is approximately {root}')")`)); + } +}) + +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md new file mode 100644 index 00000000000..1a2bb01cf56 --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1dd722f6e7c8294eeec4.md @@ -0,0 +1,68 @@ +--- +id: 65ef1dd722f6e7c8294eeec4 +title: Step 19 +challengeType: 20 +dashedName: step-19 +--- + +# --description-- + +Finally, return the value of `root` from the `square_root_bisection` function. + +# --hints-- + +You should return `root` at the end of the function. + +```js +({ + test: () => + { + const pyClassStr = runPython(`str(_Node(_code).find_function("square_root_bisection"))`); + assert.match(pyClassStr, /return\s*root/) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + +--fcc-editable-region-- + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md new file mode 100644 index 00000000000..7904b9bceab --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1e10268f8ec9121446d1.md @@ -0,0 +1,70 @@ +--- +id: 65ef1e10268f8ec9121446d1 +title: Step 20 +challengeType: 20 +dashedName: step-20 +--- + +# --description-- + +Outside the function definiton, create a variable `N` and assign the value of `16` to it. + +# --hints-- + +You should have the variable `N = 16` outside the function definition. + +```js +({ + test: () => + { + assert(runPython(`_Node(_code).find_variable("N").is_equivalent("N = 16")`)) + } +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- + +--fcc-editable-region-- + +``` diff --git a/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md new file mode 100644 index 00000000000..71da1b62c03 --- /dev/null +++ b/curriculum/challenges/ukrainian/07-scientific-computing-with-python/learn-the-bisection-method-by-finding-the-square-root-of-a-number/65ef1eac497754cafa12a26c.md @@ -0,0 +1,115 @@ +--- +id: 65ef1eac497754cafa12a26c +title: Step 21 +challengeType: 20 +dashedName: step-21 +--- + +# --description-- + +Call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +Experiment with larger values. + +With this, you have successfully implemented the bisection method to find the square root of a number. + +# --hints-- + +You should call the `square_root_bisection` function with the `N` variable as the argument and print the result. + +```js +({ + test: () => assert(runPython(`_Node(_code).has_call("square_root_bisection(N)")`)) +}) +``` + +# --seed-- + +## --seed-contents-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +--fcc-editable-region-- +N = 16 + +--fcc-editable-region-- + +``` + +# --solutions-- + +```py +def square_root_bisection(square_target, tolerance=1e-7, max_iterations=100): + if square_target < 0: + raise ValueError('Square root of negative number is not defined in real numbers') + if square_target == 1: + root = 1 + print(f'The square root of {square_target} is 1') + elif square_target == 0: + root = 0 + print(f'The square root of {square_target} is 0') + + else: + low = 0 + high = max(1, square_target) + root = None + + for _ in range(max_iterations): + mid = (low + high) / 2 + square_mid = mid**2 + + if abs(square_mid - square_target) < tolerance: + root = mid + break + + elif square_mid < square_target: + low = mid + else: + high = mid + + if root is None: + print(f"Failed to converge within {max_iterations} iterations.") + + else: + print(f'The square root of {square_target} is approximately {root}') + + return root + +N = 16 +square_root_bisection(N) +``` diff --git a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md index 19497298db5..6aa23b19f20 100644 --- a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md +++ b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md @@ -7,7 +7,7 @@ dashedName: step-8 # --description-- -Щоб побачити елемент `cat-head`, надайте йому лінійний градієнт з `#5e5e5e` зі значенням `85%` та `#45454f` зі значенням `100%`. +To see the `.cat-head` element, give it a linear gradient background with `#5e5e5e` at `85%` and `#45454f` at `100%`. Ви можете не помітити різницю між цими кольорами, але вона існує. diff --git a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md index b9326efbb5e..a4a36284447 100644 --- a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md +++ b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646ce8bb4b35544d501c7184.md @@ -11,7 +11,7 @@ dashedName: step-20 # --hints-- -Не змінюйте наявний елемент `div` з класом `car-ears`. +You should not change the existing `div` element with the class `cat-ears`. ```js assert(document.querySelectorAll('div.cat-ears').length === 1); diff --git a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md index 068c60381db..c3eb1414c1f 100644 --- a/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md +++ b/curriculum/challenges/ukrainian/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/64770351e8586671ec0911f0.md @@ -11,7 +11,7 @@ dashedName: step-15 Змініть значення властивості `position` селектора `.cat-head` на `sticky`, встановіть `top` на `0`, а потім видаліть `left` та її значення. -**Примітка:** щоб дізнатись, як працює `sticky`, потрібно розмістити певний текст до та після елемента `div` `.cat-head`. Якщо після цього прогорнути, ви побачите, що `.cat-head` прикріплений зверху та залишається там. +**Примітка:** щоб дізнатись, як працює `sticky`, потрібно розмістити певний текст до та після елемента `div` `.cat-head`. If you scroll down after that, you'll see that the `.cat-head` gets stuck to the top and remains there. # --hints-- diff --git a/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md index 0f93285cb97..5f212983dbc 100644 --- a/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md +++ b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f4774e3e0df35a68bb5f2.md @@ -61,7 +61,7 @@ while (continueLoop) { --fcc-editable-region-- --fcc-editable-region-- -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md index bf40abef119..3f935935d65 100644 --- a/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md +++ b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f47afe4c98536715d5fa4.md @@ -44,7 +44,7 @@ let done = 0; while (continueLoop) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md index 9c976287a58..38f1716a030 100644 --- a/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md +++ b/curriculum/challenges/ukrainian/15-javascript-algorithms-and-data-structures-22/learn-introductory-javascript-by-building-a-pyramid-generator/660f487dc0c8fa38084f9754.md @@ -48,7 +48,7 @@ let done = 0; while (done !== count) { done++; rows.push(padRow(done, count)); -if (done === count) { + if (done === count) { continueLoop = false; } } diff --git a/curriculum/challenges/ukrainian/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md b/curriculum/challenges/ukrainian/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md index 6a72d63ef88..5ffd2757f43 100644 --- a/curriculum/challenges/ukrainian/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md +++ b/curriculum/challenges/ukrainian/20-upcoming-python/learn-python-by-building-a-blackjack-game/64b163c20e59cbd4a64940b0.md @@ -23,15 +23,7 @@ Test value of `__name__` ```js ({ - test: () => assert(__pyodide.runPython(`__name__ == '__main__'`)) -}) -``` - -Test __locals and __pyodide - -```js -({ - test: () => assert(__pyodide.runPython(`__locals.get('add')(4,5) == 9`)) + test: () => assert(runPython(`__name__ == '__main__'`)) }) ``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md index 65c893f89e9..739cbe3acf8 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658111239f39a01c8f095c44.md @@ -1,6 +1,5 @@ --- id: 658111239f39a01c8f095c44 -videoId: nLDychdBwUg title: "Dialogue 1: What Motivates the Team?" challengeType: 21 dashedName: dialogue-1-what-motivates-the-team @@ -13,3 +12,275 @@ dashedName: dialogue-1-what-motivates-the-team # --assignment-- Перегляньте відео + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Maria", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.5, + "dialogue": { + "text": "Hey Maria, I have a question… Do you know what motivates the team?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 4.9, + "finishTime": 7.4, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 8.7, + "finishTime": 12.3, + "dialogue": { + "text": "Hi Brian! Well, one thing that really motivates me is learning new things.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 12.7, + "finishTime": 16, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 16.5, + "finishTime": 18.2, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 19.7, + "finishTime": 20.9, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 21.3, + "finishTime": 24.7, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 25, + "finishTime": 27.2, + "dialogue": { + "text": "But you know what demotivates me sometimes?", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 27.7, + "finishTime": 32.6, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 33.1, + "finishTime": 37.3, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 37.7, + "finishTime": 39.7, + "dialogue": { + "text": "Well, collaborating with our creative team", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 39.7, + "finishTime": 42.5, + "dialogue": { + "text": "and brainstorming many ideas really inspires me.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 42.8, + "finishTime": 44.6, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 45.5, + "finishTime": 49, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 49.3, + "finishTime": 53.6, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 54, + "finishTime": 55.5, + "dialogue": { + "text": "It is really frustrating.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 56.5, + "finishTime": 58.4, + "dialogue": { + "text": "Yeah, technical glitches are complicated", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 58.4, + "finishTime": 61, + "dialogue": { + "text": "and there's not much we can do other than try to solve them.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 62, + "finishTime": 63.3, + "dialogue": { + "text": "But do you know what else is great?", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 63.7, + "finishTime": 66.7, + "dialogue": { + "text": "Seeing the team's enthusiasm after solving these issues.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 67.1, + "finishTime": 69.8, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 71.3, + "finishTime": 75.4, + "dialogue": { + "text": "Yeah. Wow. You know what? This was really a motivating talk.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 75.7, + "finishTime": 77.1, + "dialogue": { + "text": "Thanks for sharing your thoughts.", + "align": "left" + } + }, + { + "character": "Maria", + "startTime": 77.7, + "finishTime": 79.8, + "dialogue": { + "text": "Anytime. It's good to have these discussions.", + "align": "right" + } + }, + { + "character": "Maria", + "startTime": 80, + "finishTime": 81.6, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "right" + } + }, + { + "character": "Maria", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 82.1 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 82.6 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md index c0172f72e7b..d6dca0cf25d 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658112ee8ac40a1d9619f160.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-6 --- - + # --description-- @@ -18,7 +15,7 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ## --sentence-- -`Well, one thing that really motivates me is _ new things.` +`Hi, Brian. Well, one thing that really motivates me is _ new things.` ## --blanks-- @@ -27,3 +24,47 @@ A gerund is the `-ing` form of a verb used as a noun. It can be the subject of a ### --feedback-- This word is a gerund, the `-ing` form of the verb used as a noun, indicating the action or process of gaining knowledge. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md index 74016df3778..e34767628a3 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658113cc404fc81e44cb941c.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-5 --- - + # --description-- @@ -20,7 +17,7 @@ When you add an `s` at the end of a word, like `things`, it means you are talkin ## --sentence-- -`Hi Brian! _, one _ that really motivates me _ learning new _.` +`Hi, Brian! _, one _ that really motivates me _ learning new _.` ## --blanks-- @@ -53,3 +50,47 @@ This is the verb `to be` conjugated in the third person singular. ### --feedback-- Maria uses this word to talk about more than one item or idea she likes to learn. It is the plural form of `thing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md index b0d4f870ebc..50d70292446 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658114e39ae35a1ece3e4ef1.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-7 --- - + # --description-- -Послухайте аудіо та дайте відповідь на запитання. +Listen to the audio and answer the question. # --question-- @@ -51,3 +48,47 @@ learning new things ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 7.48, + "finishTimestamp": 11.10 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Hi, Brian. Well, one thing that really motivates me is learning new things.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md index 62c6be1e9ae..3fc65106690 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581157ca9f14c1f5394d232.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-8 --- - + # --description-- @@ -37,3 +34,47 @@ This word is a gerund describing the activity Maria enjoys related to discoverin ### --feedback-- Another gerund that follows `and`, indicating another activity Maria enjoys, which is about getting better at something. It also ends in `-ing` and serves as a noun. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 15.04 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.28, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.78 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md index 4ca0b233417..b6b1f99f123 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65811619cf9fad1fe57fd7b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-10 --- - + # --description-- @@ -26,7 +23,7 @@ In `I love exploring many new technologies`, how is `exploring` used? ## --answers-- -As a present continuous +As a verb in the present continuous structure ### --feedback-- @@ -34,7 +31,7 @@ Present continuous are for actions happening now. This is not showing an action --- -As a simple present verb +As a verb in the simple present structure ### --feedback-- @@ -42,11 +39,11 @@ Simple present verbs don't end in `-ing`. --- -As a gerund +As a verb in the gerund form --- -As a past participle +As a verb in the past participle form ### --feedback-- @@ -55,3 +52,47 @@ Past participles are for perfect tenses or as adjectives. This is not used like ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 11.76, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 6.50, + "dialogue": { + "text": "I love exploring many new technologies and improving my skills. It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 7.00 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md index f5f6d72d0bc..599ff48ed2c 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581178fca60702052899c94.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-18 --- - + # --description-- @@ -31,3 +28,47 @@ Adding a prefix to a word can change its meaning. ### --feedback-- Maria uses an adjective ending in `-ing` to describe a feeling that is the opposite of `motivating`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 32.22, + "finishTimestamp": 36.08 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 4.86, + "dialogue": { + "text": "I can understand that, Brian. Racing against the clock can be demotivating.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.36 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md index 92cae7d90f8..fb8817c6417 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658118a9a10235216e6cd698.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-11 --- - + # --description-- -Послухайте аудіо та доповніть речення. +Listen to the audio and complete the sentence. # --fillInTheBlank-- @@ -27,3 +24,47 @@ Brian: That's great to hear, Maria. ### --feedback-- This word is used when someone listens to what another person says. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 19.86 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 2.68 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md index b599df18353..fd8342b9d4f 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658147bb3dbda824437fd6f9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-12 --- - + # --description-- @@ -32,7 +29,7 @@ The word `professionally` relates to your job or career. For instance, `He behav ### --feedback-- -This word is about gaining new knowledge or skills. Think about what you do at school or when you study something new. Напишіть це слово з великої літери. +This word is about gaining new knowledge or skills. Think about what you do at school or when you study something new. This word is capitalized. --- @@ -40,7 +37,7 @@ This word is about gaining new knowledge or skills. Think about what you do at s ### --feedback-- -This word means to develop or become bigger or more advanced. Використайте закінчення `-ing`. +This word means to develop or become bigger or more advanced. It ends with `-ing` --- @@ -49,3 +46,47 @@ This word means to develop or become bigger or more advanced. Використа ### --feedback-- This word is related to work or a career. It describes doing something in a way that shows good skills and behavior at a job. it ends with `-ly` + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 20.28, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md index ee815ef6b60..c96a766d973 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65814f353f7b4f252e11b550.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-13 --- - + # --description-- -Послухайте аудіо та дайте відповідь на запитання. +Listen to the audio and answer the question. # --question-- @@ -51,3 +48,47 @@ Reflect on how skill improvement fits into overall personal and professional dev ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 23.66 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.98, + "dialogue": { + "text": "That's great to hear, Maria. Learning and growing professionally motivates me a lot.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.48 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md index d1c635a33bf..886f2362d99 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65815057676f2625ba44a320.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-14 --- - + # --description-- @@ -53,3 +50,65 @@ He's adding to the conversation, not changing the topic. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 18.68, + "finishTimestamp": 26.26 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.18, + "dialogue": { + "text": "That's great to hear, Maria.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 2.60, + "finishTime": 5.64, + "dialogue": { + "text": "Learning and growing professionally motivates me a lot,", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 6.02, + "finishTime": 8.58, + "dialogue": { + "text": "but you know what demotivates me sometimes?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 9.08 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md index abeb543da49..c2f99ed88c6 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581530787b552274518eea5.md @@ -28,4 +28,48 @@ Maria: It keeps me excited about our projects. ### --feedback-- -This word means feeling very happy and eager. +This word means feeling very happy and eager. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 15.32, + "finishTimestamp": 17.26 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.94, + "dialogue": { + "text": "It keeps me excited about our projects.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.44 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md index 8bc7c6a0d1b..b02b0b7254a 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658153bbda68b527d415c463.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-16 --- - + # --description-- @@ -55,3 +52,47 @@ This phrase means having plenty of time, which is different from what Brian mean ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md index 20f2e419ca4..97cd2d13217 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658154d361f5f6285eeeffc6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-17 --- - + # --description-- @@ -46,4 +43,48 @@ This word is a preposition used to compare or illustrate a similarity to somethi ### --feedback-- -It means you are doing something quickly because you do not have much time. Використайте закінчення `-ing`. +It means you are doing something quickly because you do not have much time. It ends with `-ing`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 26.66, + "finishTimestamp": 31.58 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.92, + "dialogue": { + "text": "Dealing with many tight deadlines and feeling like I'm rushing to complete tasks.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 6.42 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md index 1689f6735d6..dfabf7b13cf 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581561eb7a353292c4a1ff7.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-20 --- + + # --description-- The word `brainstorming` refers to a group discussion to produce ideas and solve problems. @@ -46,3 +48,47 @@ It means adhering to specific instructions, which is not the same as the word. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md index f1042571224..4ae5a09693b 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581576a14f97b2a2d82c584.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-28 --- - + # --description-- @@ -18,7 +15,7 @@ The phrase `slow down` means to decrease in speed or reduce the rate of progress ## --sentence-- -`The problem is encountering many technical issues that make our progress _ _.` +`The problem is encountering many technical issues that _ our progress _.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to describe a decrease in speed or pace. ### --feedback-- This adverb complements the phrase to indicate a reduction or decrease in intensity, speed, or amount. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md index f0fe9383040..11f7c8a4822 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658157d104bbc92a95147e45.md @@ -5,6 +5,8 @@ challengeType: 19 dashedName: task-32 --- + + # --description-- The phrase `other than` indicates the presence of an alternative or different option. @@ -46,3 +48,47 @@ It means the singular or exclusive option, which is not the same as the phrase. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md index c1ac70f3ba4..257c7f700ee 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581588237ef332b1f4a2418.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-35 --- - + # --description-- @@ -43,3 +40,47 @@ This possessive adjective is used to refer to something that belongs to the pers ### --feedback-- This noun refers to the reason or reasons one has for acting or behaving in a particular way. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 66.12, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 3.68, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 4.18 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md index 18ddf92ca50..d60e3011b57 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658158edd3fc672bafe96079.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-38 --- - + # --description-- @@ -29,3 +26,47 @@ In the dialogue, Maria talks about the importance of discussions to help them re ### --feedback-- This verb is used to make someone think of something they might have forgotten. It brings something back into someone's mind. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 76.52, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.08, + "dialogue": { + "text": "Anytime. It's good to have these discussions. It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 5.58 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md index 2f533624477..13862f53b0a 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581596326d6ef2c0b39200d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-39 --- - + # --description-- @@ -43,3 +40,47 @@ This pronoun refers to the speaker and at least one other person, indicating a c ### --feedback-- This word is used in the context of continuing forward or persevering in a particular action or state. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 79.06, + "finishTimestamp": 80.60 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.54, + "dialogue": { + "text": "It reminds us of what keeps us going.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.04 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md index 0059c5db03c..fcad1dd79be 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658160772584ba319849f910.md @@ -1,6 +1,5 @@ --- id: 658160772584ba319849f910 -videoId: nLDychdBwUg title: "Dialogue 2: Asking How Someone Feels" challengeType: 21 dashedName: dialogue-2-asking-how-someone-feels @@ -13,3 +12,239 @@ dashedName: dialogue-2-asking-how-someone-feels # --assignment-- Перегляньте відео + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Alice", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Tom", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Alice", + "startTime": 2, + "finishTime": 5.6, + "dialogue": { + "text": "Hi Tom, you look a bit down these days. Is everything okay?", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 6.3, + "finishTime": 9.5, + "dialogue": { + "text": "Hey Alice, yeah, I feel a bit demotivated.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 9.8, + "finishTime": 13.6, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 13.8, + "finishTime": 16.7, + "dialogue": { + "text": "It's exhausting, and it feels like I'm constantly running", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 16.7, + "finishTime": 18.1, + "dialogue": { + "text": "without knowing where I'm going.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 18.9, + "finishTime": 22.7, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 23.4, + "finishTime": 25.7, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 26.2, + "finishTime": 28.8, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 28.8, + "finishTime": 30.6, + "dialogue": { + "text": "instead of working together as a team.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 31.3, + "finishTime": 34.7, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 35, + "finishTime": 38.4, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 38.9, + "finishTime": 41.7, + "dialogue": { + "text": "Sometimes, it feels like we're meeting for no reason,", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 41.7, + "finishTime": 44.3, + "dialogue": { + "text": "and it's hard to find time to actually work on projects.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 45, + "finishTime": 48.4, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 49, + "finishTime": 52.6, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 52.6, + "finishTime": 56.6, + "dialogue": { + "text": "without any variation. It feels like I'm wasting my skills and creativity.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 57.06, + "finishTime": 59, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 59.6, + "finishTime": 62.8, + "dialogue": { + "text": "Repeating the same tasks over and over can be demotivating.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 63.2, + "finishTime": 66.4, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "right" + } + }, + { + "character": "Alice", + "startTime": 66.8, + "finishTime": 69.4, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation,", + "align": "left" + } + }, + { + "character": "Alice", + "startTime": 69.4, + "finishTime": 71.3, + "dialogue": { + "text": "and it's good to share and support each other.", + "align": "left" + } + }, + { + "character": "Tom", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 71.8 + }, + { + "character": "Alice", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 72.3 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md index 5b6a0a28b5a..80430441638 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816188f69f4731f852414b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-40 --- - + # --description-- @@ -22,7 +19,7 @@ In this conversation, Alice notices something about Tom's mood and asks if he's ## --sentence-- -`Hi Tom, you look a bit _ _ days. Is everything okay?` +`Hi, Tom. You look a bit _ _ days. Is everything okay?` ## --blanks-- @@ -39,3 +36,47 @@ This word is used to describe feeling sad or unhappy. It's like when you're not ### --feedback-- This word is used with `days` to talk about the current time or the recent period. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 0.98, + "finishTimestamp": 4.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.60, + "dialogue": { + "text": "Hi, Tom. You look a bit down these days. Is everything okay?", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.10 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md index 81c44424019..817a1de4ad2 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658162d19fa392326fe7a5c7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-41 --- - + # --description-- @@ -20,7 +17,7 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ## --sentence-- -`Hey Alice, yeah, I feel a bit _.` +`Hey, Alice. Yeah, I feel a bit _.` ## --blanks-- @@ -29,3 +26,47 @@ When you see `-ed` at the end of a word like `demotivate`, it's talking about ho ### --feedback-- This word is used to describe how Tom feels. It ends with `ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 8.48 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md index 84523d53fa6..a5e98901869 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658163793f65e532b8fa18e6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-42 --- - + # --description-- @@ -46,8 +43,52 @@ This word means `lacking` or `not having` something. --- -`break` +`breaks` ### --feedback-- -This word refers to a short period of rest or pause from work or activity. +This word refers to a short period of rest or pause from work or activity. Use the plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 8.84, + "finishTimestamp": 12.60 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.76, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.26 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md index 71d7abf942f..4b62f2383ae 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65816435fa555c330f785cbb.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-43 --- - + # --description-- @@ -45,3 +42,47 @@ This word means something is happening all the time or very often. ### --feedback-- This word is used to indicate the absence of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 12.82, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 5.30, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.80 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md index 6bf7b22832e..80fe0912857 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65818f21f6e4f33551f7023a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-44 --- - + # --description-- @@ -18,7 +15,7 @@ Tom talks about what's making him feel demotivated. Let's figure out what is bot ## --text-- -What is making Tom feel demotivated and why? +What is making Tom feel demotivated? ## --answers-- @@ -51,3 +48,65 @@ Reflect on Tom's words about his work routine and how it makes him feel. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 5.30, + "finishTimestamp": 17.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "Hey, Alice. Yeah, I feel a bit demotivated.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.54, + "finishTime": 8.3, + "dialogue": { + "text": "One thing that really gets to me is working long hours without any breaks.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 8.52, + "finishTime": 12.82, + "dialogue": { + "text": "It's exhausting and it feels like I'm constantly running without knowing where I'm going.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 13.32 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md index 773eb7055a5..5c3985e24b6 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658191bf5053a835c882fdd3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-45 --- - + # --description-- @@ -51,3 +48,47 @@ She understands how Tom feels ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 18.98 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 2.28, + "dialogue": { + "text": "I totally get that, Tom.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 2.78 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md index f9f1acb0a85..46934b72230 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819284843aab3625cf49e1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-46 --- - + # --description-- @@ -37,3 +34,47 @@ This word means working more hours than what is normally required, often beyond ### --feedback-- This word describes something that makes you feel very tired, like it's taking all your energy away. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 21.72 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.02, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.52 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md index 8f861bff22b..37ade89fb82 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658192efec6fe7366f7b99d2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-47 --- - + # --description-- @@ -35,3 +32,47 @@ This word means managing or handling, especially when the situation is challengi ### --feedback-- This word, in the context of the office, refers to the social and power dynamics among coworkers and within the workplace environment. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 24.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.52, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.02 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md index dc33ad431a5..d3bb3f26c91 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65819377e2ad2536b3d1e0c0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-48 --- - + # --description-- @@ -45,3 +42,47 @@ This word means making an effort to do something, often something challenging. ### --feedback-- This word is about doing tasks, especially with others to achieve a common goal or finish a project. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 25.02, + "finishTimestamp": 29.38 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.36, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 5.86 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md index d1e9f018f2f..e21eaac0ea6 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581944b911c3c3715d35518.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-49 --- - + # --description-- @@ -51,3 +48,65 @@ Reflect on the specific aspect of work that Alice mentions she hates dealing wit ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 17.70, + "finishTimestamp": 29.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.9, + "dialogue": { + "text": "I totally get that, Tom. Working overtime all the time can be draining.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 5.64, + "finishTime": 7.96, + "dialogue": { + "text": "Personally, I hate dealing with office politics.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 8.4, + "finishTime": 12.88, + "dialogue": { + "text": "It's frustrating when people are constantly trying to beat each other instead of working together as a team.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 13.38 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md index f3d23c1b09f..2ba67b4a176 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658194a34cb24537624fad0e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-50 --- - + # --description-- @@ -22,11 +19,11 @@ Tom is agreeing with Alice about a specific aspect of work that they find unplea ## --blanks-- -`dealing` +`Dealing` ### --feedback-- -This word means managing or handling something, often implying that it's not an easy or enjoyable task. +This word means managing or handling something, often implying that it's not an easy or enjoyable task. Don't forget the capitalization. --- @@ -35,3 +32,47 @@ This word means managing or handling something, often implying that it's not an ### --feedback-- In the context of an office, this word refers to the social and power dynamics among coworkers. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 30.08, + "finishTimestamp": 33.46 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "You're right, Alice. Dealing with office politics is never fun.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md index b385da5d6b5..f12b5b96f68 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581950a4e5ca237a17d1a02.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-51 --- - + # --description-- @@ -28,7 +25,7 @@ Listen to Tom's statement and fill in the missing words about what else is troub ### --feedback-- -This word means one more or an extra thing. Напишіть це слово з великої літери. +This word means one more or an extra thing. This word is capitalized. --- @@ -45,3 +42,47 @@ This word is part of a expression that means something is making Tom upset or an ### --feedback-- This word is used when you're talking about experiencing something, like when you have a lot of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md index b44d9331c22..818f7d94e97 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658195600d516b37e310fbf2.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-52 --- - + # --description-- -Послухайте аудіо та дайте відповідь на запитання. +Listen to the audio and answer the question. # --question-- @@ -51,3 +48,47 @@ He wishes for even more meetings ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 33.80, + "finishTimestamp": 37.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.64, + "dialogue": { + "text": "Another thing that gets to me is having too many meetings.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.14 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md index 1bc7a6db08a..58f97ce6248 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/658197767dc3fc387439e067.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-53 --- - + # --description-- -Послухайте аудіо та дайте відповідь на запитання. +Listen to the audio and fill in the blanks. # --fillInTheBlank-- @@ -51,3 +48,47 @@ This word means to discover or locate something. It's often used when you're loo ### --feedback-- This word is used to emphasize what is really true or happening. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md index 96315c198c6..661f1e7a39a 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a2a527222938f4f0a9eb.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-54 --- - + # --description-- @@ -51,3 +48,47 @@ They take away time from working on projects ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 37.76, + "finishTimestamp": 43.36 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.60, + "dialogue": { + "text": "Sometimes it feels like we're meeting for no reason and it's hard to find time to actually work on projects.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.10 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md index 9818d63c771..6b563783dde 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a32ee97531393b34b783.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-55 --- - + # --description-- @@ -24,7 +21,7 @@ Alice: I hear you, Tom. Sitting in meetings for hours can be discouraging. ## --sentence-- -`_ in meetings for hours can be _.` +`I hear you, Tom. _ in meetings for hours can be _.` ## --blanks-- @@ -41,3 +38,47 @@ This word describes the action of being seated. It is capitalized. ### --feedback-- This word means something that makes you feel less confident or willing to continue. It ends in `ing`, showing it's describing the effect of the action. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md index 81a8b6e82a1..e32c5e342b3 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a3ccf2ecd839816c885d.md @@ -5,12 +5,7 @@ challengeType: 19 dashedName: task-56 --- - + # --description-- @@ -53,3 +48,47 @@ Consider what Alice means by `discouraging` in the context of meetings. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 43.86, + "finishTimestamp": 47.32 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 4.46, + "dialogue": { + "text": "I hear you, Tom. Sitting in meetings for hours can be discouraging.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 4.96 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md index 31a9f029dfd..06de11ea8e0 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a46a402a0d39de6b1932.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-57 --- - + # --description-- @@ -43,3 +40,47 @@ This word is used to describe a large number of things grouped together. It's li ### --feedback-- This word refers to having different types or changes in something. It's the opposite of doing the same thing over and over. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 52.78 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 6.02, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.52 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md index 6c2a017e3e2..3f74d0b46bb 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a5c14eb46b3a36f082c6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-58 --- - + # --description-- @@ -35,3 +32,47 @@ This word means not using something valuable in a good or effective way. It's li ### --feedback-- This word refers to the ability to make new things or think of new ideas. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 53.24, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 3.34, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 3.84 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md index 48eae3cd4d2..0301d9ab64a 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a6b50e86ae3a9041f6f1.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-59 --- - + # --description-- @@ -51,3 +48,56 @@ Consider what Alice says directly annoys her versus how she feels about another ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md index 97c145e8d5f..c378948d55b 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a7d6af8f2f3aefd232ab.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-60 --- - + # --description-- @@ -51,3 +48,56 @@ Think about whether meetings are mentioned in the context of wasting skills and ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 47.76, + "finishTimestamp": 55.58 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "For me, what really annoys me is having to do a bunch of repetitive tasks without any variation.", + "align": "center" + } + }, + { + "character": "Alice", + "startTime": 6.48, + "finishTime": 8.82, + "dialogue": { + "text": "It feels like I'm wasting my skills and creativity.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 9.32 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md index b0a24b15ca4..809479e7435 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581a95da053653b4593a650.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-61 --- - + # --description-- @@ -39,3 +36,47 @@ This auxiliary verb is used here to emphasize the verb that follows it, making t ### --feedback-- This adjective describes feelings of annoyance or irritation, often because of obstacles or difficulties. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 58.00 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.14, + "dialogue": { + "text": "That does sound frustrating, Alice.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 3.64 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md index 004205d06ba..36487a82d36 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581aa0c6583c53b927defa4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-62 --- - + # --description-- @@ -55,3 +52,47 @@ This word, when used twice with `and` in between, emphasizes the repetition of a ### --feedback-- This word describes something that reduces your desire or willingness to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 55.86, + "finishTimestamp": 61.78 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "That does sound frustrating, Alice. Repeating the same tasks over and over can be demotivating.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md index 62eba93ef9f..46e5d78fab8 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6581add0405ccf3bfc3c1d5f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-63 --- - + # --description-- @@ -28,7 +25,7 @@ Listen to Tom and fill in the missing words. ### --feedback-- -This word means paying attention to what someone else is saying, showing you care about their words. Використайте закінчення `-ing`. +This word means paying attention to what someone else is saying, showing you care about their words. It ends with `-ing`. --- @@ -45,3 +42,47 @@ This word is used to describe an emotional experience or sensation, in this case ### --feedback-- This word is the plural of `this`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md index 0326abc1101..79dbb3a7fb1 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f4b78e0174e6ce7272ff.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-65 --- - + # --description-- @@ -51,3 +48,47 @@ For listening to him ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md index 80268abcfd3..1a31fd931b5 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1f959ca8f18f0e711d596.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-66 --- - + # --description-- @@ -51,3 +48,47 @@ This word means to tell others about your own experiences, thoughts, or feelings ### --feedback-- This word involves giving help or encouragement, showing you are there for someone. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md index 7bad4b13b6f..52865720c1a 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a1fa60a447d4f36ae16e1e.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-67 --- - + # --description-- -Послухайте аудіо та дайте відповідь на запитання. +Listen to the audio and answer the question. # --question-- @@ -51,3 +48,47 @@ The value of sharing feelings and supporting one another ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Alice", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 65.58, + "finishTimestamp": 70.30 + } + }, + "commands": [ + { + "character": "Alice", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Alice", + "startTime": 1, + "finishTime": 5.72, + "dialogue": { + "text": "Of course, Tom. We all have our moments of demotivation and it's good to share and support each other.", + "align": "center" + } + }, + { + "character": "Alice", + "opacity": 0, + "startTime": 6.22 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md index 21731b2b6e5..b56ed77319e 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a25ccb31eedb00df74679f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-64 --- - + # --description-- @@ -44,3 +41,46 @@ This word is the middle part of the phrase used to casually introduce new inform This word completes the phrase, indicating a casual addition or shift in the conversation. +# --scene-- + +```json +{ + "setup": { + "background": "company2-roof.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-2.mp3", + "startTime": 1, + "startTimestamp": 62.00, + "finishTimestamp": 65.38 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.38, + "dialogue": { + "text": "Thanks for listening, by the way. It feels good to talk about these things.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.88 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md index 0eebc219cb9..fea03e0f8e8 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a351bd69b0b72d7ed24eb5.md @@ -1,6 +1,5 @@ --- id: 65a351bd69b0b72d7ed24eb5 -videoId: nLDychdBwUg title: "Dialogue 3: Talking About Motivations to Pursue a Career" challengeType: 21 dashedName: dialogue-3-talking-about-motivations-to-pursue-a-career @@ -13,3 +12,212 @@ dashedName: dialogue-3-talking-about-motivations-to-pursue-a-career # --assignment-- Перегляньте відео + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Brian", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Lisa", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5, + "dialogue": { + "text": "Hey Lisa, what motivated you to choose a career in tech?", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 6, + "finishTime": 8.5, + "dialogue": { + "text": "One of my main motivations was the financial stability", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 8.8, + "finishTime": 10, + "dialogue": { + "text": "that tech jobs can provide.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 10.4, + "finishTime": 12.8, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 13.3, + "finishTime": 16.3, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 17.4, + "finishTime": 19.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 19.8, + "finishTime": 24, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 24, + "finishTime": 26, + "dialogue": { + "text": "and have different perspectives.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 26.8, + "finishTime": 29.2, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 29.2, + "finishTime": 32.1, + "dialogue": { + "text": "Another thing was the chance to be part of projects", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 32.1, + "finishTime": 34.2, + "dialogue": { + "text": "that push the limits of innovation and creativity.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 34.9, + "finishTime": 36, + "dialogue": { + "text": "I'm with you on that one.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 36.1, + "finishTime": 39.6, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 39.7, + "finishTime": 43.1, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "left" + } + }, + { + "character": "Lisa", + "startTime": 44.3, + "finishTime": 47.3, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems", + "align": "right" + } + }, + { + "character": "Lisa", + "startTime": 47.3, + "finishTime": 49.6, + "dialogue": { + "text": "and finding practical solutions is really thrilling.", + "align": "right" + } + }, + { + "character": "Brian", + "startTime": 50.3, + "finishTime": 53, + "dialogue": { + "text": "Knowing that we solved problems is really exciting, Lisa.", + "align": "left" + } + }, + { + "character": "Brian", + "startTime": 53.4, + "finishTime": 56.7, + "dialogue": { + "text": "I hope we keep getting as much motivation from it as we can.", + "align": "left" + } + }, + { + "character": "Lisa", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.2 + }, + { + "character": "Brian", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.7 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md index 5cfe7ab0c66..5c1eaa946a2 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3524b7cfbc82f51667b0a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-68 --- - + # --description-- @@ -18,7 +15,7 @@ Brian: Hey Lisa, what motivated you to choose a career in tech? ## --sentence-- -`Hey Lisa, what _ you to _ a career in tech?` +`Hey, Lisa, what _ you to _ a career in tech?` ## --blanks-- @@ -34,4 +31,48 @@ This word means something gave you a reason or desire to do something. It ends w ### --feedback-- -This verb is about making a decision between different options. +This verb is about making a decision between different options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md index 69d91930227..9dcf417c317 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35281e6f8f4303df075e5.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-69 --- - + # --description-- @@ -51,3 +48,47 @@ What motivated her to pick a tech career ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 4.18 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.68 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md index 27c45d35759..02968af664b 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a352d14f8050311510e2e9.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-70 --- - + # --description-- @@ -37,3 +34,47 @@ The most important. ### --feedback-- Being steady, meaning you don't have to worry too much about it. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md index aa73e2886a2..6af08b72c2f 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35340e8c3ae32030cea01.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-71 --- - + # --description-- @@ -35,3 +32,47 @@ This word is a past tense verb used to describe a state or condition in the past ### --feedback-- This verb means to give or supply something needed, like help, information, or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.20, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 5.70 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md index c38ea5a6c1e..ee2e28ac939 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3538f615216331ea90f58.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-72 --- - + # --description-- @@ -52,3 +48,71 @@ Reflect on Lisa's statement and whether travel is mentioned as a motivation. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 9.02 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.18, + "dialogue": { + "text": "Hey, Lisa, what motivated you to choose a career in tech?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.50 + }, + { + "character": "Lisa", + "opacity": 1, + "startTime": 5.50 + }, + { + "character": "Lisa", + "startTime": 5.82, + "finishTime": 10.02, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md index a323362c1db..f0270b9c97d 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35429c637c13540c9be80.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-73 --- - + # --description-- @@ -37,3 +34,47 @@ This verb means giving permission or making it possible to do something. this ve ### --feedback-- This noun describes the feeling of being certain about your abilities or something you're going to do. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 9.48, + "finishTimestamp": 11.90 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.42, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 3.92 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md index df51651aae2..e69138da2fb 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b30ccc7db44250a72b6.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-74 --- - + # --description-- @@ -39,3 +36,47 @@ This word refers to different areas of work or study. It's plural here because s ### --feedback-- This verb is used to talk about successfully reaching a goal, especially after putting in effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 12.16, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 4.18, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.68 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md index d643767d551..14f0a488744 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35b8a7dd409452ec99d38.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-75 --- - + # --description-- @@ -51,3 +48,65 @@ Lisa doesn't mention working less. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md index b1ed5350171..e778e333a52 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c036df46e46187c31a3.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-76 --- - + # --description-- The words `much` and `many` are used to talk about quantity. @@ -52,3 +49,65 @@ Reflect on Lisa's statement about what makes tech jobs stand out for her. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 4.82, + "finishTimestamp": 15.34 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.2, + "dialogue": { + "text": "One of my main motivations was the financial stability that tech jobs can provide.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 5.66, + "finishTime": 8.08, + "dialogue": { + "text": "It allows me to plan for my future with confidence.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 8.54, + "finishTime": 11.32, + "dialogue": { + "text": "In other fields, it's much more difficult to achieve this stability.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 11.82 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md index d821e96a9de..ca32012b88c 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35c7b9d642f478d6cabba.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-77 --- - + # --description-- @@ -27,3 +24,47 @@ Listen to Brian's response to Lisa and fill in the missing word that shows he st ### --feedback-- This adverb is used to emphasize the truth or importance of a statement, showing strong agreement or belief. it ends with `ly`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 18.38 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.40, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.90 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md index 8c3aa03a615..ec2f59b9242 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35cf34eb65f48c24ee97e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-78 --- - + # --description-- @@ -51,3 +48,47 @@ This word is used to describe different areas of study or work. This word is in ### --feedback-- These are different ways of viewing or thinking about something. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 18.80, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.20, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.70 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md index be803ba00d8..e3e946152d6 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a35d50e8421d49ef07ae09.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-79 --- - + # --description-- @@ -51,3 +48,56 @@ Consider Brian's interest in working across many fields versus concentrating on ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 15.98, + "finishTimestamp": 25.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.4, + "dialogue": { + "text": "Financial stability is certainly important, Lisa.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 3.82, + "finishTime": 10.02, + "dialogue": { + "text": "For me, it was the opportunity to collaborate with experts from many fields and have different perspectives.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.52 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md index 387e5d45799..1b576a873ef 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a391fe39a2997ea4c0e980.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-80 --- - + # --description-- @@ -28,7 +25,7 @@ Lisa is talking about the joy of working with different people. ### --feedback-- -This word means working together with others. Notice it ends with `-ing`, indicating an action is happening. Напишіть це слово з великої літери. +This word means working together with others. Notice it ends with `-ing`, indicating an action is happening. This word is capitalized. --- @@ -37,3 +34,47 @@ This word means working together with others. Notice it ends with `-ing`, indica ### --feedback-- This adjective describes something that is thrilling or full of energy. It ends with `-ing`, showing a quality or state. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.62, + "finishTimestamp": 28.18 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md index 61032464115..ae2da908469 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392505010427f98bd8363.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-81 --- - + # --description-- @@ -45,3 +42,47 @@ TTo extend or go beyond usual limits or boundaries. It's often used to talk abou ### --feedback-- This noun refers to new ideas, products, or methods that improve something or solve problems. It's about coming up with new ways to do things. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 28.38, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md index 10f8994a5ef..99e6266792e 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a392b9f8a69480b1063c86.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-82 --- - + # --description-- -Послухайте аудіо та доповніть речення. +Listen to the audio and complete the sentence. # --question-- @@ -51,3 +48,56 @@ Consider whether Lisa's motivation is related to work environment or the nature ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 33.26 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.94 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md index d6bfc95803d..d3884236614 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a393115e989381c5dc0c4c.md @@ -5,11 +5,7 @@ challengeType: 19 dashedName: task-83 --- - + # --description-- @@ -52,3 +48,80 @@ He agrees with Lisa ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + }, + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 25.82, + "finishTimestamp": 34.98 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 3.36, + "dialogue": { + "text": "Collaborating with diverse teams can be exciting, Brian.", + "align": "center" + } + }, + { + "character": "Lisa", + "startTime": 3.76, + "finishTime": 8.44, + "dialogue": { + "text": "Another thing was the chance to be part of projects that push the limits of innovation and creativity.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 8.45 + }, + { + "character": "Brian", + "opacity": 1, + "startTime": 8.45 + }, + { + "character": "Brian", + "startTime": 8.57, + "finishTime": 10.16, + "dialogue": { + "text": "I'm with you on that one.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 10.66 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md index a8379da2ad0..5963f6a6443 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3937c171d9182e6bb4bc5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-84 --- - + # --description-- @@ -37,3 +34,47 @@ This noun describes the ability to change or adapt easily according to different ### --feedback-- This word refers to the specific functions or positions that individuals can have within a group or organization. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 38.36 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.76 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md index 74afe5707a5..37f8aac049c 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3948b46f1b6857a598ff7.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-85 --- - + # --description-- @@ -20,7 +17,7 @@ Listen carefully and fill in the missing words about what tech roles make possib ## --sentence-- -`They _ us to balance our jobs with personal _ and hobbies.` +`I'm also interested in the flexibility that tech roles offer. They _ us to balance our jobs with personal _ and hobbies.` ## --blanks-- @@ -37,3 +34,56 @@ This verb means to make something possible or to give permission for something. ### --feedback-- This noun refers to things you enjoy doing, like hobbies or activities that catch your attention. This word is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md index 22e3bd447e8..139854612f1 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39972a4169f0739dd52b8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-86 --- - + # --description-- @@ -55,3 +52,56 @@ Is Brian talking about traveling, or is he interested in something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 35.10, + "finishTimestamp": 42.14 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.26, + "dialogue": { + "text": "I'm also interested in the flexibility that tech roles offer.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.7, + "finishTime": 8.04, + "dialogue": { + "text": "They allow us to balance our jobs with personal interests and hobbies.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 8.54 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md index 6873e21e06d..a17d996ffa0 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a1ed201f80945939c52.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-87 --- - + # --description-- @@ -45,3 +42,47 @@ This word means discovering or coming up with something, like an answer or solut ### --feedback-- This adjective means very exciting. It often describes something that makes your heart beat faster because it's so exciting or fun. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md index 8d73e629ad7..0cf55458871 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39a8889842f0a4ed3faa4.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-88 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on the word `satisfaction` and if it suggests feeling tired. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Lisa", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 43.10, + "finishTimestamp": 48.68 + } + }, + "commands": [ + { + "character": "Lisa", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Lisa", + "startTime": 1, + "finishTime": 6.58, + "dialogue": { + "text": "Yeah. Also, the satisfaction of solving complex problems and finding practical solutions is really thrilling.", + "align": "center" + } + }, + { + "character": "Lisa", + "opacity": 0, + "startTime": 7.08 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md index 0bec791aa60..6d5740efa19 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39ae928cfbd0b75cd91c5.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-89 --- - + # --description-- -Послухайте аудіо та доповніть речення. +Listen to the audio and complete the sentence. # --fillInTheBlank-- @@ -43,3 +40,47 @@ This adjective describes something that is thrilling or causes great enthusiasm. ### --feedback-- This word means receiving or obtaining something. Here, it's also in the `-ing` form, indicating an ongoing action or process. Remember to use double `t`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md index 298822fd62a..e68886cc96c 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a39b443701060c7297158e.md @@ -5,16 +5,13 @@ challengeType: 19 dashedName: task-90 --- - + # --description-- When someone says `as much as`, they are talking about doing something as fully as possible. Like `if you eat as much cake as you can`, you eat a lot until you can't eat any more. -Послухайте аудіо та дайте відповідь на запитання. +Listen to the audio and answer the question. # --question-- @@ -53,3 +50,47 @@ Brian talks about being excited by solving problems, not about where to find mot ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-breakroom.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-3.mp3", + "startTime": 1, + "startTimestamp": 49.30, + "finishTimestamp": 55.76 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 7.46, + "dialogue": { + "text": "Knowing that we solve problems is really exciting, Lisa. I hope we keep getting as much motivation from it as we can.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.96 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md index b442c301119..7bfa2f07881 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a3dafe5c945761cef35199.md @@ -13,3 +13,221 @@ dashedName: dialogue-4-chatting-about-gadgets # --assignment-- Перегляньте відео + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Bob", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sarah", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.6, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech?", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 5, + "finishTime": 7, + "dialogue": { + "text": "It's all those amazing gadgets!", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 7.8, + "finishTime": 9.6, + "dialogue": { + "text": "I can see your enthusiasm, Bob!", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 9.9, + "finishTime": 12.3, + "dialogue": { + "text": "Tell me, which tech gadgets are your absolute favorites?", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 13, + "finishTime": 16.2, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 16.3, + "finishTime": 18.9, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health,", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 19.2, + "finishTime": 22.7, + "dialogue": { + "text": "and even helps me stay organized with reminders and notifications.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 23.7, + "finishTime": 26, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 26, + "finishTime": 28.1, + "dialogue": { + "text": "The camera quality, the speed,", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 28.3, + "finishTime": 30.8, + "dialogue": { + "text": "and the number of apps available are what I like the most.", + "align": "right" + } + }, + { + "character": "Bob", + "startTime": 31.2, + "finishTime": 33.9, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 34.3, + "finishTime": 37.2, + "dialogue": { + "text": "Gadgets like these are transforming our daily lives.", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 37.6, + "finishTime": 40.8, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 41.3, + "finishTime": 44, + "dialogue": { + "text": "I love capturing stunning aerial shots", + "align": "left" + } + }, + { + "character": "Bob", + "startTime": 44, + "finishTime": 46.5, + "dialogue": { + "text": "and exploring new angles for photography.", + "align": "left" + } + }, + { + "character": "Sarah", + "startTime": 47.7, + "finishTime": 50.3, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 50.7, + "finishTime": 52.7, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 52.7, + "finishTime": 54.5, + "dialogue": { + "text": "It's amazing how these innovations", + "align": "right" + } + }, + { + "character": "Sarah", + "startTime": 54.5, + "finishTime": 56.8, + "dialogue": { + "text": "keep making our lives more interesting and connected.", + "align": "right" + } + }, + { + "character": "Sarah", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 57.3 + }, + { + "character": "Bob", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 57.8 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md index 61f6714b9e6..e32663ae2c9 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f2c2d1bbdfbe82cb3fdd.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-91 --- - + # --description-- @@ -47,3 +44,47 @@ This word is used to point out specific things that are being talked about, in t ### --feedback-- This word refers to small electronic devices or tools that are useful or interesting. It's often used to talk about cool tech items. It is in plural. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md index c68a7573436..2d427e87805 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f3c0e87146c0d01a57f8.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-92 --- - + # --description-- @@ -51,3 +48,47 @@ The latest technology gadgets ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.08 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Hey, Sarah, do you know what really gets me excited about tech? It's all those amazing gadgets.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.58 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md index 83b99cc2b44..bd2a6289284 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f4aef1c065c3263c561a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-93 --- - + # --description-- @@ -27,3 +24,47 @@ Sarah: I can see your enthusiasm, Bob! ### --feedback-- This noun describes the feeling of being very excited or interested in something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 8.60 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 2.74, + "dialogue": { + "text": "I can see your enthusiasm, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.24 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md index be99f5ad56e..c7d10347c99 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f58e1daa8fc51dafc832.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-94 --- - + # --description-- @@ -22,7 +19,7 @@ Sarah: I can see your enthusiasm, Bob! Tell me, which tech gadgets are your abso ## --sentence-- -`Tell me, _ tech gadgets are your _ favorites?` +`I can see your enthusiasm, Bob! Tell me, _ gadgets are your _ favorites?` ## --blanks-- @@ -39,3 +36,47 @@ This word asks for a specific choice or selection from a known group of items. ### --feedback-- This adjective emphasizes that the choice is the most complete or total among all options. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 6.86, + "finishTimestamp": 11.36 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.50, + "dialogue": { + "text": "I can see your enthusiasm, Bob. Tell me, which gadgets are your absolute favorites?", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.00 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md index c9be5def18f..4201fa6a54b 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f5fe475701c6697e738b.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-95 --- - + # --description-- @@ -35,3 +32,47 @@ This preposition is used to show that something belongs to or is part of somethi ### --feedback-- This noun refers to a type of watch that has more features than just telling time, often including apps and internet connectivity. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 15.20 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.66 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md index 4b129760004..4c8456045d1 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f6ca14fdbfc86041b28a.md @@ -5,10 +5,8 @@ challengeType: 22 dashedName: task-96 --- - + + # --description-- `To track` means to follow or monitor the progress, movement, or development of something or someone. @@ -44,3 +42,47 @@ This verb means to monitor or follow the course or progress of something, especi ### --feedback-- This verb means to make it easier or possible for someone to do something by offering services or resources. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md index 59d9eaa01c7..614d3b0a58c 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f87e991076cbb4efd9bc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-97 --- - + # --description-- @@ -45,3 +42,47 @@ This adjective means arranged in a systematic way, especially on a large scale. ### --feedback-- These are alerts or messages that prompt you to remember tasks or appointments. This word ends with `s`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 15.36, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.38, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.88 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md index 37c653935d3..e5818d48ae6 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4f90542fdffcd6533424a.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-98 --- - + # --description-- -Послухайте аудіо та дайте відповідь на запитання. +Listen to the audio and answer the question. # --question-- @@ -51,3 +48,56 @@ It keeps him connected, tracks his health, and helps him stay organized ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 12.04, + "finishTimestamp": 21.74 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.16, + "dialogue": { + "text": "Well, one of my favorite gadgets is the smartwatch.", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.32, + "finishTime": 10.70, + "dialogue": { + "text": "I love how it keeps me connected, tracks my health, and even helps me stay organized with reminders and notifications.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 11.20 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md index 1676f013e93..2541b490077 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a4ff8554c98dd601a081d4.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-99 --- - + # --description-- @@ -35,3 +32,47 @@ This word is capitalized and in plural form. ### --feedback-- This word describes advanced mobile phones with extensive computing capabilities and connectivity. It is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.26, + "finishTimestamp": 25.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.98 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md index 02d1062ef6d..41b6bd1f4bb 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5000506fe76d745652a33.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-100 --- - + # --description-- @@ -53,3 +50,47 @@ This adjective means something can be accessed or used, like apps in an app stor ### --feedback-- This word is used to indicate the highest degree or the greatest amount of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 25.24, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.60, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 6.10 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md index 82f442e10c5..85364365d24 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5010affb10fd99d166200.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-101 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on whether design is a factor in Sarah's stated preferences. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 22.56, + "finishTimestamp": 29.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.48, + "dialogue": { + "text": "Smartwatches are cool. I'm more into smartphones.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 3.68, + "finishTime": 8.08, + "dialogue": { + "text": "The camera quality, the speed, and the number of apps available are what I like the most.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 8.58 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md index df053e826e6..b29c871c2ce 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a502f63b185addb3117797.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-102 --- - + # --description-- @@ -34,7 +31,7 @@ This adjective is used to describe something that is very good or impressive. ### --feedback-- -This verb means causing a significant change or improvement in something. Використайте закінчення `-ing`. +This verb means causing a significant change or improvement in something. This word ends with `-ing`. --- @@ -43,3 +40,47 @@ This verb means causing a significant change or improvement in something. Вик ### --feedback-- This adjective refers to something that happens every day or is part of everyday life. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md index bd14600648b..726180426d9 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5034b32a0cfdefbe36156.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-103 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Bob mentions radio as a factor in transforming daily life. ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 30.20, + "finishTimestamp": 36.22 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 7.02, + "dialogue": { + "text": "Oh, smartphones are fantastic too, Sarah. Gadgets like these are transforming our daily lives.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 7.52 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md index 96494eba598..1bff2383726 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50441ea961ee157da6ff3.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-104 --- - + # --description-- @@ -44,4 +41,48 @@ This word is used to talk about the current period of time or the present days. ### --feedback-- -This noun refers to remote-controlled flying machines, often used for photography, racing, or recreation. Напишіть це слово з великої літери. +This noun refers to remote-controlled flying machines, often used for photography, racing, or recreation. This word is capitalized. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 39.78 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.20, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 4.70 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md index 6201727ec8d..63fe99f6dd8 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a505250947a4e3777c82ab.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-105 --- - + # --description-- -Послухайте аудіо та доповніть речення нижче. +Listen to the audio and complete the sentence with the missing words. # --fillInTheBlank-- @@ -26,7 +23,7 @@ AUDIO REFERENCE: ### --feedback-- -This verb means to take a photograph or video of something, especially something impressive or important. Використайте закінчення `-ing`. +This verb means to take a photograph or video of something, especially something impressive or important. It ends with `-ing`. --- @@ -34,7 +31,7 @@ This verb means to take a photograph or video of something, especially something ### --feedback-- -This verb involves examining or investigating something in order to learn more about it, often by looking at it from different views or perspectives. Використайте закінчення `-ing`. +This verb involves examining or investigating something in order to learn more about it, often by looking at it from different views or perspectives. It ends with `-ing`. --- @@ -43,3 +40,47 @@ This verb involves examining or investigating something in order to learn more a ### --feedback-- This noun refers to the art, practice, or job of taking pictures with a camera, capturing moments, and expressions. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md index 01a54f44308..afe821421be 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a506572b8d62e47a6f1c08.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-106 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective describes something extremely beautiful or impressive. ### --feedback-- In photography, this noun means photographs or the act of taking a photograph. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md index abaab729a74..694c286472b 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507474a05a9e869827a34.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-107 --- - + # --description-- @@ -39,3 +36,47 @@ This adjective refers to something related to the air or happening in the sky. ### --feedback-- This noun refers to the specific viewpoints or positions from which photos are taken. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 40.36, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 6.20, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 6.70 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md index 50b3c728f3c..9e55adaffb1 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a507ad3caccfe9620e868b.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-108 --- - + # --description-- -Послухайте аудіо та дайте відповідь на запитання. +Listen to the audio and answer the question. # --question-- @@ -51,3 +48,56 @@ They allow for stunning aerial photography ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Bob", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 36.58, + "finishTimestamp": 45.56 + } + }, + "commands": [ + { + "character": "Bob", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Bob", + "startTime": 1, + "finishTime": 4.2, + "dialogue": { + "text": "But you know what my obsession is these days? Drones!", + "align": "center" + } + }, + { + "character": "Bob", + "startTime": 4.78, + "finishTime": 9.98, + "dialogue": { + "text": "I love capturing stunning aerial shots and exploring new angles for photography.", + "align": "center" + } + }, + { + "character": "Bob", + "opacity": 0, + "startTime": 10.48 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md index 2ff43fa2092..14484f947e3 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5080cafc379ea8d382c42.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-109 --- - + # --description-- @@ -35,3 +32,47 @@ This adjective in the expression means allowing access, passage, or a view throu ### --feedback-- This noun refers to things that may happen or be the case in the future, often exciting or beneficial opportunities. it is in plural form. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.48, + "finishTimestamp": 49.32 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.84, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 4.34 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md index ca4f4b06342..87794a39fe7 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a50874fd56ceeb9d8a271f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-110 --- - + # --description-- @@ -35,3 +32,47 @@ This noun describes a strong feeling of enthusiasm or excitement for something o ### --feedback-- In this context, this adjective means that a feeling, especially a positive one like enthusiasm, can spread from one person to others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 49.52, + "finishTimestamp": 51.74 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 3.22, + "dialogue": { + "text": "Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 3.72 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md index 5201f1625a6..fd6c5f110de 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a508d77b492aecb63b06b5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-111 --- - + # --description-- @@ -51,3 +48,47 @@ This adjective describes something that arouses curiosity or is enjoyable and en ### --feedback-- This adjective means being in touch with others or having easy access to information, especially through technology. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 51.94, + "finishTimestamp": 56.04 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 5.10, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 5.60 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md index 6a7b0e7c6da..7488dbda600 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a5312db639d2f8fd4c31a7.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-112 --- - + # --description-- @@ -51,3 +48,56 @@ Reflect on the enthusiasm and positivity in Sarah's statement. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-boardroom.png", + "characters": [ + { + "character": "Sarah", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-4.mp3", + "startTime": 1, + "startTimestamp": 46.28, + "finishTimestamp": 55.84 + } + }, + "commands": [ + { + "character": "Sarah", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sarah", + "startTime": 1, + "finishTime": 6.26, + "dialogue": { + "text": "Drones are an open door for exciting possibilities, Bob. Your passion for tech gadgets is contagious.", + "align": "center" + } + }, + { + "character": "Sarah", + "startTime": 6.46, + "finishTime": 10.36, + "dialogue": { + "text": "It's amazing how these innovations keep making our lives more interesting and connected.", + "align": "center" + } + }, + { + "character": "Sarah", + "opacity": 0, + "startTime": 10.86 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md index 33cdcc3b62b..cdb28ab2394 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a533f54a5afeff6c6bb996.md @@ -1,6 +1,5 @@ --- id: 65a533f54a5afeff6c6bb996 -videoId: nLDychdBwUg title: "Dialogue 5: Discussing Open-source Software" challengeType: 21 dashedName: dialogue-5-discussing-open-source-software @@ -13,3 +12,284 @@ dashedName: dialogue-5-discussing-open-source-software # --assignment-- Перегляньте відео + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 } + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1 + }, + "alwaysShowDialogue": true + }, + "commands": [ + { + "character": "Tom", + "position": { "x": 25, "y": 0, "z": 1 }, + "startTime": 0 + }, + { + "character": "Sophie", + "position": { "x": 70, "y": 0, "z": 1 }, + "startTime": 0.5 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.5, + "dialogue": { + "text": "Hey, Sophie, what motivates you", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 3.8, + "finishTime": 6.9, + "dialogue": { + "text": "to work on open-source software projects in your free time?", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 7.8, + "finishTime": 10.2, + "dialogue": { + "text": "Well, I love contributing to open-source projects!", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 10.5, + "finishTime": 13, + "dialogue": { + "text": "I really like the sense of community and collaboration.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 13.5, + "finishTime": 15.4, + "dialogue": { + "text": "It's incredible how people from around the world", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 15.4, + "finishTime": 17.5, + "dialogue": { + "text": "come together to create something amazing.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 18.2, + "finishTime": 20.4, + "dialogue": { + "text": "Yeah. I checked out some open-source projects,", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 20.5, + "finishTime": 23.1, + "dialogue": { + "text": "but I admit that I have problems with the amount of time", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 23.1, + "finishTime": 24.3, + "dialogue": { + "text": "it can take to contribute.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 24.7, + "finishTime": 27.1, + "dialogue": { + "text": "Sometimes, it can be so time-consuming.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 27.1, + "finishTime": 29.7, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 29.9, + "finishTime": 33.3, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 33.8, + "finishTime": 36.5, + "dialogue": { + "text": "Open source is all about transparency and accessibility,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 36.5, + "finishTime": 38.4, + "dialogue": { + "text": "and that's something I truly believe in.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 39, + "finishTime": 42.2, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 42.7, + "finishTime": 45.7, + "dialogue": { + "text": "For me, I like the idea of practicing my skills", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 45.7, + "finishTime": 48, + "dialogue": { + "text": "and getting recognition for my contributions.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 48.5, + "finishTime": 51.4, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "left" + } + }, + { + "character": "Sophie", + "startTime": 52.4, + "finishTime": 56, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained,", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 56.4, + "finishTime": 58, + "dialogue": { + "text": "there isn't much you can do to save it.", + "align": "right" + } + }, + { + "character": "Sophie", + "startTime": 58.4, + "finishTime": 61.4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "right" + } + }, + { + "character": "Tom", + "startTime": 62.2, + "finishTime": 65.2, + "dialogue": { + "text": "That's true. The sustainability of open-source projects", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 65.2, + "finishTime": 67.5, + "dialogue": { + "text": "is something I'm growing to appreciate more.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 67.8, + "finishTime": 69.2, + "dialogue": { + "text": "Thanks for sharing your motivations.", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 69.8, + "finishTime": 71.7, + "dialogue": { + "text": "I think I'll see if I can find a project", + "align": "left" + } + }, + { + "character": "Tom", + "startTime": 71.7, + "finishTime": 72.8, + "dialogue": { + "text": "to dedicate some spare time to.", + "align": "left" + } + }, + { + "character": "Sophie", + "position": { "x": 125, "y": 0, "z": 1 }, + "startTime": 73.3 + }, + { + "character": "Tom", + "position": { "x": -25, "y": 0, "z": 1 }, + "startTime": 73.8 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md index 2b30991c7ee..237c75faace 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a53475949fcc0056b1e479.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-113 --- - + # --description-- @@ -37,3 +34,47 @@ This preposition is used to indicate involvement or engagement in a particular a ### --feedback-- This part of the term refers to the origin or starting point, in this case, indicating that the software's foundational code is open and accessible to all. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md index a2ba770d7ef..e6da5ae940d 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a534f9fdc15f01ed67d860.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-114 --- - + # --description-- @@ -51,3 +48,47 @@ Think about whether Tom is asking about skills or the reasons behind an activity ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 5.92 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.92, + "dialogue": { + "text": "Hey, Sophie, what motivates you to work on open-source software projects in your free time?", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.42 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md index 7e33de4cb97..9cddffbdbd4 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a73f5e3153ba7bff076a3e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-115 --- - + # --description-- @@ -20,7 +17,7 @@ Sophie: Well, I love contributing to open-source projects! I really like the sen ## --sentence-- -`I really like the sense of _ and _.` +`Well, I love contributing to open-source projects! I really like the sense of _ and _.` ## --blanks-- @@ -37,3 +34,47 @@ Describes a group of people who share common interests or values, especially in ### --feedback-- Refers to the act of working with someone to produce or create something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md index c5ada0f7b74..a0a6ed18256 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7405cef607d7f856cc5ac.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-116 --- - + # --description-- @@ -51,3 +48,47 @@ Reflect on whether Sophie's enjoyment comes from personal recognition or somethi ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 6.66, + "finishTimestamp": 12.08 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.42, + "dialogue": { + "text": "Well, I love contributing to open-source projects. I really like the sense of community and collaboration.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.92 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md index 93aa77192b9..322c0be855b 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74152da45e881db4f54dc.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-117 --- - + # --description-- @@ -45,3 +42,47 @@ Refers to the earth or the globe. ### --feedback-- Indicates the act of joining with others. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md index 6cda7b5a7bd..4a7ebb53c8a 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a742367d9803841b422795.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-118 --- - + # --description-- @@ -51,3 +48,47 @@ Sophie talks about working as a group. Is it about being famous or doing somethi ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 12.30, + "finishTimestamp": 16.28 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.98, + "dialogue": { + "text": "It's incredible how people from around the world come together to create something amazing.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 5.48 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md index 9fdde4055c6..f1b138a4c93 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74339f74217867ec2eb5e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-119 --- - + # --description-- @@ -20,7 +17,7 @@ Tom: Yeah. I checked some open-source projects, but I admit that I have problems ## --sentence-- -`Yeah. I checked some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` +`Yeah, I checked out some open-source projects, but I _ that I have problems with the _ of time it can take to contribute.` ## --blanks-- @@ -37,3 +34,47 @@ This verb means to confess or acknowledge something, often reluctantly. ### --feedback-- This noun is used to describe the quantity or measure of something, in this case, referring to time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 23.34 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.28, + "dialogue": { + "text": "Yeah, I checked out some open-source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.78 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md index b4618753c85..e53ac2de76e 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a743f03d6688884acb6cb2.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-120 --- - + # --description-- @@ -18,7 +15,7 @@ Tom "Sometimes, it can be so time-consuming." ## --sentence-- -`Sometimes, it can be _ time-_.` +`Sometimes it can be _ time-_.` ## --blanks-- @@ -35,3 +32,47 @@ This word is used to emphasize the degree of something, in this case, how much t ### --feedback-- This word describes activities that use up a lot of time. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 23.52, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.64, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.14 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md index bf78f3a561f..b87448ba17f 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7455f319ba98b5885cb6a.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-121 --- - + # --description-- @@ -51,3 +48,56 @@ Think about if Tom says the projects are easy or something else. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 17.06, + "finishTimestamp": 26.16 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 7.08, + "dialogue": { + "text": "Yeah, I checked out some open source projects, but I admit that I have problems with the amount of time it can take to contribute.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 7.46, + "finishTime": 10.10, + "dialogue": { + "text": "Sometimes it can be so time-consuming.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 10.60 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md index 7e02b36f432..741a158a88a 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a747a9502c8f8fbcd5dd13.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-122 --- - + # --description-- @@ -21,7 +18,7 @@ For example, if you say: `I decided to learn a new language and practice every d ## --sentence-- -`It can _ a _.` +`I understand, Tom. It can _ a _.` ## --blanks-- @@ -38,3 +35,47 @@ This word is used to talk about something being true or existing. ### --feedback-- This word means a promise to do something or give your time to it, showing you are ready to work hard and keep your word. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 28.72 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 3.56, + "dialogue": { + "text": "I understand, Tom. It can be a commitment.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.06 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md index cb04c449b8a..5abcef01b1c 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a749262ad6c093d2dc8bb1.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-123 --- - + # --description-- @@ -35,3 +32,47 @@ This verb, in this context, means to tolerate or bear, especially when talking a ### --feedback-- This adjective describes something not open or accessible to the general public or kept for the use of a specific person or group. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md index ee47455fe4c..8fd78b0de35 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74ac67e7fbd97ef282812.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-124 --- - + # --description-- -Послухайте аудіо та доповніть речення. +Listen to the audio and complete the sentence. # --fillInTheBlank-- @@ -35,3 +32,47 @@ This word, ending in `-ing`, means to observe or witness something happening.. ### --feedback-- Also ending in `-ing`, this word is used to describe the state or condition of something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 29.18, + "finishTimestamp": 32.32 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4.14, + "dialogue": { + "text": "But I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.64 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md index 509073d74d5..8c66b5a2ec8 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74b5ca72a0c9a0b8e5e99.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-125 --- - + # --description-- @@ -37,3 +34,51 @@ This word means being open and clear about things. It ends with `-y`, showing it ### --feedback-- This word is about making things easy for everyone to use or get. It ends with `-ity`, showing it's about the state of being accessible. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 32.52, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 5.74, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 6.24 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md index 7eccba2d75e..bea0c07d787 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74c672ff11d9c210a8732.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-126 --- - + # --description-- -Sophie expresses her thoughts on open-source projects.. +Sophie expresses her thoughts on open-source projects. # --question-- @@ -51,3 +48,56 @@ Reflect on Sophie's belief in open source and its benefits. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": {"x":50,"y":0,"z":1.4}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 26.16, + "finishTimestamp": 37.26 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 7.16, + "dialogue": { + "text": "I understand, Tom. It can be a commitment, but I can't stand seeing this great software being private.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.56, + "finishTime": 12.10, + "dialogue": { + "text": "Open source is all about transparency and accessibility, and that's something I truly believe in.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 12.60 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md index 60b1a0275ac..022dc4ee5c0 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74cd01bc1b59d99c053a8.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-127 --- - + # --description-- @@ -35,3 +32,51 @@ This noun refers to the quality of being open and clear, especially about proces ### --feedback-- This noun describes something that provides a reason or incentive for someone to act in a certain way or to put in more effort. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 41.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.62, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 5.12 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md index 1cf205dbb6d..7ec0005e536 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a74dae1b3acd9fad3a068e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-128 --- - + # --description-- @@ -37,3 +34,51 @@ This verb means to perform an activity or exercise repeatedly or regularly in or ### --feedback-- This noun refers to the action or process of acknowledging someone's efforts, achievements, or qualities. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 41.5, + "finishTimestamp": 47.12 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.62, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.12 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md index 8944f9e865e..ca02d3d8f9c 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a750a82c2476a6305bf621.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-129 --- - + # --description-- @@ -35,3 +32,51 @@ This adjective is used to describe something that is very good or impressive. ### --feedback-- This adjective means having the ability, power, or qualities necessary to do something. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 47.54, + "finishTimestamp": 50.44 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 3.9, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 4.4 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md index 24fc0e2e0d8..5f00b168618 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a751927c4b80a86e6fb1c9.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-130 --- - + # --description-- @@ -51,3 +48,69 @@ Reflect on whether Tom's attraction to open-source is about tight schedules. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 37.62, + "finishTimestamp": 50.24 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 4.42, + "dialogue": { + "text": "Yeah, transparency is a strong motivator for many developers.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 4.88, + "finishTime": 10.2, + "dialogue": { + "text": "For me, I like the idea of practicing my skills and getting recognition for my contributions.", + "align": "center" + } + }, + { + "character": "Tom", + "startTime": 10.72, + "finishTime": 13.62, + "dialogue": { + "text": "It's a fantastic way to show what you're capable of.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 14.12 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md index 15bc6fb155c..9ae2bed6220 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a788ea40f8e6b77d3cc64f.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-131 --- - + # --description-- @@ -18,7 +15,7 @@ Sophie: Also, when software becomes obsolete because it's no longer maintained, ## --sentence-- -`Also, when software becomes _, there isn't _ you can do to _ it.` +`Also, when software becomes _ because it's no longer maintained, there isn't _ you can do to _ it.` ## --blanks-- @@ -43,3 +40,51 @@ This word is used to indicate a small amount or degree; not a lot. ### --feedback-- This verb means to keep safe or rescue from harm or danger, in this context, to try and make something usable again. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md index 988e42f3e58..68b3cb3bf25 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78dadbf033cc11554453d.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-132 --- - + # --description-- @@ -43,3 +40,51 @@ Something that once was true or possible is not the case anymore. ### --feedback-- This contraction of `is not` is used to express the negation of the statement that follows, indicating a limitation or impossibility. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md index c3ad48a2832..4184bf1754e 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78e7b5fb9a0c38757cc3e.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-133 --- - + # --description-- -Послухайте аудіо та дайте відповідь на запитання. +Listen to the audio and answer the question. # --question-- @@ -51,3 +48,51 @@ It can't be used effectively anymore ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 57.06 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 7.14 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md index 7b65b575626..ddfdc92aea4 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a78f35fab096c5694079db.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-134 --- - + # --description-- @@ -18,7 +15,7 @@ AUDIO REFERENCE: ## --sentence-- -`With open-_, there's always a _ for continuous improvement.` +`With open _, there's always a _ for continuous improvement.` ## --blanks-- @@ -35,3 +32,51 @@ Refers to a model where the source code is available for anyone to see, modify, ### --feedback-- This noun means an opportunity or possibility for something to happen or be done, especially something desirable. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md index 91b23849ee4..bd877fe68b1 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7917a28aa16ca5a832593.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-135 --- - + # --description-- @@ -35,3 +32,51 @@ It indicates an ongoing, unending process of enhancement or development. ### --feedback-- It refers to the act of making something better, more effective, or more efficient. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 57.44, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 4, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 4.5 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md index 8de3da9761b..d9eb724f615 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a792163bf705cb7b6eb255.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-137 --- - + # --description-- @@ -27,3 +24,51 @@ Tom: The sustainability of open-source projects is something I'm growing to appr ### --feedback-- It refers to the ongoing development of open-source projects over the long term. it ends with `-y`. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md index a369367f213..18e344c3369 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7957981392ed32523e628.md @@ -5,14 +5,11 @@ challengeType: 22 dashedName: task-138 --- - + # --description-- -`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time,` means they might not like them at first, but after some timethey start to like them more. +`To grow to appreciate` means you start liking something more as you learn about it. For example, `Kids grow to appreciate vegetables with time` means they might not like them at first, but after some timethey start to like them more. # --fillInTheBlank-- @@ -34,4 +31,52 @@ This word means being able to continue over time in a good way. ### --feedback-- -Starting to like something more as you understand it better. +Starting to like something more as you understand it better. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md index ef5c2559099..39221f01dcc 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79822981b3fd86a5cb03b.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-139 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on Tom's statement about sustainability and appreciation, not complexity ## --video-solution-- 1 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 61.04, + "finishTimestamp": 66.52 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.48, + "dialogue": { + "text": "That's true. The sustainability of open-source projects is something I'm growing to appreciate more.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 6.98 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md index e2f2cbc8539..64078ed8c3c 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a7996c848275dbf2083044.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-140 --- - + # --description-- @@ -30,7 +27,7 @@ Listen to the sentence and fill in the missing words about expressing gratitude ### --feedback-- -This verb means to tell others about your thoughts, feelings, or experiences. Використайте закінчення `-ing`. +This verb means to tell others about your thoughts, feelings, or experiences. It ends with `-ing`. --- @@ -47,3 +44,51 @@ This verb means to discover or locate something after searching for it. ### --feedback-- Describes time that is available to use as you wish, not taken up by work or other obligations. + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md index 51528f7f7e9..c9ea6b09cf6 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65a79a08cb0594ddd408e4db.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-141 --- - + # --description-- @@ -51,3 +48,51 @@ Reflect on whether Tom's interest is in language learning or engaging in a proje ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Tom", + "position": { + "x": 50, + "y": 15, + "z": 1.2 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 66.68, + "finishTimestamp": 72.28 + } + }, + "commands": [ + { + "character": "Tom", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Tom", + "startTime": 1, + "finishTime": 6.6, + "dialogue": { + "text": "Thanks for sharing your motivations. I think I'll see if I can find a project to dedicate some spare time to.", + "align": "center" + } + }, + { + "character": "Tom", + "opacity": 0, + "startTime": 7.1 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md index fae8dfdfc22..542749b111e 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca7d68954aca359009f790.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-1 --- - + # --description-- @@ -18,7 +15,7 @@ Listen to what Brian asks Maria. Pay attention to the verbs he uses. ## --sentence-- -`Hey Maria, I _ a question. Do you know what _ the team?` +`Maria, I _ a question. Do you know what _ the team?` ## --blanks-- @@ -35,3 +32,47 @@ This verb is used when someone is in possession of something or wants to express ### --feedback-- This word means to give someone a reason to do something. This verb in conjugated in the third person. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 3.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.02 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md index a6c01c4f062..ef6b246a2e4 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65ca82211643fd3f990788dd.md @@ -5,16 +5,13 @@ challengeType: 22 dashedName: task-2 --- - + # --description-- The word `motivate` is a verb that means to give someone a reason to act in a certain way. -By adding `-ed` to the end, it becomes `motivated`, an adjective that describes someone who has been influenced or encouraged to do something. Наприклад, `I'm not motivated to work late today`. +By adding `-ed` to the end, it becomes `motivated`, an adjective that describes someone who has been influenced or encouraged to do something. For example: `I'm not motivated to work late today` This sentence means the person does not feel like they want to work extra hours today. `Not motivated` means they don't have the energy or desire to do it. @@ -39,3 +36,47 @@ This word is used to indicate the reason or cause of something. It is conjugated ### --feedback-- It ends with `-ed` because it's an adjective that comes from a verb. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 3.92, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 3.50, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 4.00 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md index 43501596bf1..019f8c5f233 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb916a2d3d9851f81601b2.md @@ -5,22 +5,19 @@ challengeType: 22 dashedName: task-3 --- - + # --description-- Adjectives ending in `-ed` are often used to describe the emotions or feelings someone experiences. They are used to express a state of mind or being. -Послухайте аудіо та доповніть речення. +Listen to the audio and complete the sentence. # --fillInTheBlank-- ## --sentence-- -`Hey Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` +`Maria, I have a question. Do you know what _ the team? How about you? What makes you feel _?` ## --blanks-- @@ -37,3 +34,56 @@ Think about the word that means to give someone a reason to do something right n ### --feedback-- This word describes how someone feels when they have a reason or desire to do something. This word ends with `-ed`. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md index cd6eb55fe56..5e85fa41e41 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65cb95e5ff03d253dcf867af.md @@ -5,20 +5,17 @@ challengeType: 19 dashedName: task-4 --- - + # --description-- -In the dialogue, Brian asks three questions but they are all connected. +In the dialogue, Brian asks a couple of related questions. # --question-- ## --text-- -`What is Brian asking Maria about?` +What is Brian asking Maria about? ## --answers-- @@ -51,3 +48,56 @@ The conversation is centered around motivation, not the physical location of whe ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 0.00, + "finishTimestamp": 6.42 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.52, + "dialogue": { + "text": "Maria, I have a question. Do you know what motivates the team?", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 4.92, + "finishTime": 7.42, + "dialogue": { + "text": "How about you? What makes you feel motivated?", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.92 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md index 3fcedc8e47a..1fb7d14a0db 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8beb00559e5a183ab2de.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-21 --- - + # --description-- @@ -26,7 +23,7 @@ Fill in the missing words from what Maria says about working with others. ### --feedback-- -This word means working together with others on a project or task. Використайте закінчення `-ing`. +This word means working together with others on a project or task. It ends with `-ing`. --- @@ -34,5 +31,48 @@ This word means working together with others on a project or task. Викори ### --feedback-- -This word means thinking of many ideas together with a group of people. Використайте закінчення `-ing`. +This word means thinking of many ideas together with a group of people. It ends with `-ing`. +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.38 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.88, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.38 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md index 34fa22fa292..4bad2622172 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc8d3b0133d45abd7a179b.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-22 --- - + # --description-- -Послухайте аудіо та дайте відповідь на запитання. +Listen to the audio and answer the question. # --question-- @@ -51,3 +48,47 @@ Maria refers to her creative team, not her friends, as her collaborators. ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.50, + "finishTimestamp": 41.28 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.28 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md index 049adf8248f..087f779e767 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc92b127e3af5bcab2a449.md @@ -5,16 +5,13 @@ challengeType: 22 dashedName: task-23 --- - + # --description-- `To generate` means to create or produce something, especially ideas or solutions. -Послухайте аудіо та доповніть речення. +Listen to the audio and fill in the missing words. # --fillInTheBlank-- @@ -37,3 +34,47 @@ This word means to create or produce something, especially ideas or solutions. ### --feedback-- This word refers to ideas or plans that are used in thinking, discussion, or creating something new. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 41.84, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 2.78, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 3.28 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md index 8b3966c2461..ff671898919 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc932d577d505c57e9551a.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-24 --- - + # --description-- -Послухайте аудіо та дайте відповідь на запитання. +Listen to the audio and answer the question. # --question-- @@ -51,3 +48,56 @@ Collaborating with the creative team ## --video-solution-- 4 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 36.70, + "finishTimestamp": 43.62 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.78, + "dialogue": { + "text": "Well, collaborating with our creative team and brainstorming many ideas really inspires me.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.14, + "finishTime": 7.92, + "dialogue": { + "text": "It's where we generate our best concepts.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 8.42 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md index 43b3b373f28..f05ee90988b 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9417738a7e5cd2bf317e.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-25 --- - + # --description-- @@ -26,7 +23,7 @@ Listen and fill in the missing words. ### --feedback-- -This word means working together with others to achieve a goal. Напишіть це слово з великої літери. +This word means working together with others to achieve a goal. This word is capitalized. --- @@ -35,3 +32,47 @@ This word means working together with others to achieve a goal. Напишіть ### --feedback-- This word refers to the use of imagination or original ideas to create something. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 48.00 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.22 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md index d1fdaef463e..60929cb22e1 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc94ba65ed765d55195bc0.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-27 --- - + # --description-- @@ -28,7 +25,7 @@ Listen and fill in the missing words about the problems Brian talks about that m ### --feedback-- -This word means to find something or someone without planning to, especially problems. Використайте закінчення `-ing`. +This word means to find something or someone without planning to, especially problems. It ends with `-ing`. --- @@ -37,3 +34,47 @@ This word means to find something or someone without planning to, especially pro ### --feedback-- This word is used for problems with machines or computers that need special knowledge to understand or fix. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 48.30, + "finishTimestamp": 52.62 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 5.32, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 5.82 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md index 147e1e6065a..47610c430f6 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc989e09a9226b9b51dc87.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-29 --- - + # --description-- @@ -27,3 +24,47 @@ When something is `frustrating`, it makes you feel upset or annoyed because you ### --feedback-- This word is used when something makes you feel upset or annoyed because it is difficult or impossible to deal with. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 53.02, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 2.50, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 3.00 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md index e4f0a05da25..602ab561fb5 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc990ec22b3e6c0345c725.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-30 --- - + # --description-- @@ -51,3 +48,65 @@ Does having many ideas make Brian frustrated, or is it something else? ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 44.28, + "finishTimestamp": 54.52 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 4.72, + "dialogue": { + "text": "I agree, Maria. Collaboration and creativity are great.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 5.02, + "finishTime": 9.34, + "dialogue": { + "text": "The problem is encountering many technical issues that slow our progress down.", + "align": "center" + } + }, + { + "character": "Brian", + "startTime": 9.74, + "finishTime": 11.24, + "dialogue": { + "text": "It is really frustrating.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 11.74 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md index 2b658c3d2c2..aa0cc2e167b 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9a04edb4d56c8390bc3a.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-31 --- - + # --description-- @@ -35,3 +32,47 @@ This word means little problems with things like computers or apps. When there a ### --feedback-- This word means to make an effort to do something, especially when it's hard. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md index 1db44e674d9..0ea74271939 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9ab3635ebc6d167f86e6.md @@ -5,14 +5,11 @@ challengeType: 19 dashedName: task-33 --- - + # --description-- -Послухайте аудіо та дайте відповідь на запитання. +Listen to the audio and answer the question. # --question-- @@ -51,3 +48,47 @@ Reflect on whether taking a break is mentioned as a way to deal with glitches. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 55.34, + "finishTimestamp": 60.16 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.82, + "dialogue": { + "text": "Yeah, technical glitches are complicated and there's not much we can do other than try to solve them.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.32 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md index 633fe85b2ff..c377c1699e7 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9b4c8577c76d76724227.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-34 --- - + # --description-- @@ -37,3 +34,47 @@ This word means being very excited or eager about something. It's like when you ### --feedback-- This word means finding a way to fix a problem. It's like when you figure out the answer to a difficult question. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.76, + "finishTimestamp": 65.66 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.90, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 6.40 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md index 514e2dc3fbc..f4794138fea 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9be86f2ae26ddcdf0bb3.md @@ -6,10 +6,7 @@ dashedName: task-36 --- - + # --description-- @@ -52,3 +49,56 @@ Reflect on whether the speed of solving problems is what Maria highlights as mot ## --video-solution-- 3 + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Maria", + "position": {"x":50,"y":0,"z":1.5}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 60.96, + "finishTimestamp": 68.80 + } + }, + "commands": [ + { + "character": "Maria", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Maria", + "startTime": 1, + "finishTime": 5.7, + "dialogue": { + "text": "But do you know what else is great? Seeing the team's enthusiasm after solving these issues.", + "align": "center" + } + }, + { + "character": "Maria", + "startTime": 6.16, + "finishTime": 8.84, + "dialogue": { + "text": "When you see the team inspired, it can boost your motivation.", + "align": "center" + } + }, + { + "character": "Maria", + "opacity": 0, + "startTime": 9.34 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md index b0b3b4b31da..76fc83e9d13 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/65fc9c5db0a80e6e3d3cfce5.md @@ -5,10 +5,7 @@ challengeType: 22 dashedName: task-37 --- - + # --description-- @@ -18,7 +15,7 @@ In this part of the conversation, Brian talks about how the talk made him feel a ## --sentence-- -`Yeah. Wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` +`Yeah, wow. You know what? This was really a _ talk. Thanks for _ your thoughts.` ## --blanks-- @@ -35,3 +32,47 @@ This word means something that gives you energy or a reason to do something. It' ### --feedback-- This word means giving something that you have to others. It's like when you tell someone your ideas or feelings. + +# --scene-- + +```json +{ + "setup": { + "background": "cafe.png", + "characters": [ + { + "character": "Brian", + "position": {"x":50,"y":15,"z":1.2}, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-1.mp3", + "startTime": 1, + "startTimestamp": 70.38, + "finishTimestamp": 76.10 + } + }, + "commands": [ + { + "character": "Brian", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Brian", + "startTime": 1, + "finishTime": 6.72, + "dialogue": { + "text": "Yeah, wow. You know what? This was a really motivating talk. Thanks for sharing your thoughts.", + "align": "center" + } + }, + { + "character": "Brian", + "opacity": 0, + "startTime": 7.22 + } + ] +} +``` diff --git a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md index c39b92b41d3..ef8a45436cb 100644 --- a/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md +++ b/curriculum/challenges/ukrainian/21-a2-english-for-developers/learn-how-to-have-a-conversation-about-preferences-and-motivations/6602ec717db2bc1105700d40.md @@ -5,10 +5,7 @@ challengeType: 19 dashedName: task-136 --- - + # --description-- @@ -51,3 +48,60 @@ Reflect on the connection between updates and user experience Sophie suggests. ## --video-solution-- 2 + +# --scene-- + +```json +{ + "setup": { + "background": "company2-center.png", + "characters": [ + { + "character": "Sophie", + "position": { + "x": 50, + "y": 0, + "z": 1.4 + }, + "opacity": 0 + } + ], + "audio": { + "filename": "4.1-5.mp3", + "startTime": 1, + "startTimestamp": 51.42, + "finishTimestamp": 60.44 + } + }, + "commands": [ + { + "character": "Sophie", + "opacity": 1, + "startTime": 0 + }, + { + "character": "Sophie", + "startTime": 1, + "finishTime": 6.64, + "dialogue": { + "text": "Also, when software becomes obsolete because it's no longer maintained, there isn't much you can do to save it.", + "align": "center" + } + }, + { + "character": "Sophie", + "startTime": 7.02, + "finishTime": 10.02, + "dialogue": { + "text": "With open source, there's always a chance for continuous improvement.", + "align": "center" + } + }, + { + "character": "Sophie", + "opacity": 0, + "startTime": 10.52 + } + ] +} +```