File size: 8,688 Bytes
33852e5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Coding Assignment</title>

        <style>
            body {
                font-family: sf pro text, -apple-system, BlinkMacSystemFont, Roboto, segoe ui, Helvetica, Arial,
                    sans-serif, apple color emoji, segoe ui emoji, segoe ui symbol;
                font-weight: 400;
                line-height: 22.4px;
                font-size: 16px;
            }
            p,
            ul,
            ol {
                font-size: 16px;
                font-weight: 400;
            }
            h1,
            h2,
            h3,
            h4,
            h5,
            h6 {
                font-weight: bold;
            }
            ul {
                list-style: none;
                margin: 0;
                padding: 0;
                max-width: none;
            }
            .code-snippet {
                background-color: #fff;
                border: 1px solid #d1d7dc;
                color: #b4690e;
                font-size: 90%;
                padding: 0.2rem 0.4rem;
            }
            .code-block {
                background-color: #fff;
                color: #b4690e;
                font-size: 90%;
            }
            .black-block {
                color: #000000;
            }
            .italic-text {
                font-style: italic;
            }
        </style>
    </head>

    <body onload="main()">
        <h1 id="coding-title"></h1>
        <div>
            <h2>Instructions</h2>
            <div id="coding-instructions"></div>
        </div>
        <div>
            <h2>Test(s)</h2>
            <div id="coding-tests"></div>
        </div>
        <div>
            <h2>Solution(s)</h2>
            <div id="coding-solutions"></div>
        </div>

        <script>
            const quizData = {"title": "010 Extend Array", "hasInstructions": true, "hasTests": true, "hasSolutions": true, "instructions": "<ol><li><p>Implement console program which will meet the following requirements:</p><ol><li><p>Program starts and asks user to enter length of an array.</p></li><li><p>Program generates array of random integer numbers (use java.util.Random) with array length specified by user. Random numbers should be between 1 and 100.<br><br>Method should look like this:<br><strong><em>public static int[] generateRandomArray(int amountOfElements) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &lt;write your code here&gt;<br>}</em></strong><br><br></p></li><li><p>Program creates the second array with size of twice as much as the first array.</p></li><li><p>The first elements in the new array are first the same elements as in old array. The other half of elements are elements as in the first array multiplied by two.<br><br><strong><em>public static int[] extendArray(int[] arr) {</em></strong></p></li></ol><p><strong><em>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;write your code here&gt;</em></strong></p><p><strong><em>&nbsp; &nbsp; &nbsp; &nbsp; }</em></strong></p></li></ol><p>For example, if user set initial array length as ten:</p><p>array #1 - {1, 3, 5, 7, 10, 11, 12, 15, 17, 20} (generated randomly)</p><p>array #2 - {1, 3, 5, 7, 10, 11, 12, 15, 17, 20, 2, 6, 10, 14, 20, 22, 24, 30, 34, 40}</p>", "tests": [{"file_name": "Evaluate.java", "content": "import org.junit.Test;\nimport org.junit.Assert;\nimport com.udemy.ucp.*;\nimport static org.junit.Assert.assertEquals;\nimport static org.junit.Assert.assertTrue;\n\nimport org.junit.Test;\n\npublic class Evaluate {\n    @Test\n\tpublic void shouldGenerateRandomIntArrayInRangeFrom1To100With5Elements() {\n\t\tint amountOfElements = 5;\n\t\tint[] generateRandomArray = ArrayExtension.generateRandomArray(amountOfElements);\n\t\tassertEquals(amountOfElements, generateRandomArray.length);\n\t}\n\t\n\t@Test\n\tpublic void shouldGenerateRandomIntArrayInRangeFrom1To100With100Elements() {\n\t\tint amountOfElements = 100;\n\t\tint[] generateRandomArray = ArrayExtension.generateRandomArray(amountOfElements);\n\t\tassertEquals(amountOfElements, generateRandomArray.length);\n\t}\n\t\n\t@Test\n\tpublic void shouldGenerateRandomIntArrayInRangeFrom1To100() {\n\t\tint amountOfElements = 100;\n\t\tint[] generateRandomArray = ArrayExtension.generateRandomArray(amountOfElements);\n\t\tfor (int i : generateRandomArray) {\n\t\t\tassertTrue(i >= 0);\n\t\t\tassertTrue(i <= 100);\n\t\t}\n\t}\n}\n"}], "solutions": [{"file_name": "ArrayExtension.java", "content": "import java.util.Arrays;\r\nimport java.util.Random;\r\nimport java.util.Scanner;\r\n\r\npublic class ArrayExtension {\r\n\r\n\tpublic static final int MULTIPLIER = 2;\r\n\t\r\n\tpublic static void main(String[] args) {\r\n\t\tScanner sc = new Scanner(System.in);\r\n\t\tSystem.out.print(\"Please, enter length of initial array: \");\r\n\t\tint baseArrayLength = sc.nextInt();\r\n\t\tint[] arr = generateRandomArray(baseArrayLength);\r\n\t\tint[] extendedArray = extendArray(arr);\r\n\t\tSystem.out.println(\"*** Initial array ***\");\r\n\t\tSystem.out.println(Arrays.toString(arr));\r\n\t\tSystem.out.println(\"*** Extended array ***\");\r\n\t\tSystem.out.println(Arrays.toString(extendedArray));\r\n\t}\r\n\r\n\t/**\r\n\t * The method extends array.\r\n\t * If array {1, 2, 3} has been passed to this method then array {1, 2, 3, 2, 4, 6}\r\n\t * is returned from this method.\r\n\t * \r\n\t * @param arr - base of extension. Extended array contains elements from this array\r\n\t * and additionally contains the same elements multiplied by two. \r\n\t * @return extended array.\r\n\t */\r\n\tpublic static int[] extendArray(int[] arr) {\r\n\t\tint newArrayLenght = arr.length * 2;\r\n\t\tint[] resultArray = Arrays.copyOf(arr, newArrayLenght);\r\n\t\t\r\n\t\tfor (int i = arr.length; i < newArrayLenght; i++) {\r\n\t\t\tresultArray[i] = arr[i - arr.length] * MULTIPLIER;\r\n\t\t}\r\n\t\t\r\n\t\treturn resultArray;\r\n\t}\r\n\r\n\tpublic static int[] generateRandomArray(int amountOfElements) {\r\n\t\tRandom r = new Random();\r\n\t\tint[] resultArray = new int[amountOfElements];\r\n\t\tfor (int i = 0; i < amountOfElements; i++) {\r\n\t\t\tresultArray[i] = r.nextInt(100) + 1;\r\n\t\t}\r\n\t\treturn resultArray;\r\n\t}\r\n\r\n}\r\n"}]};

            function renderCodeList(rootElement, codeList, className, titlePrefix) {
                for (var i = 0; i < codeList.length; i++) {
                    var elem = codeList[i];
                    var jsElem = document.createElement("div");
                    jsElem.className = className;
                    var jsElemTitle = document.createElement("h3");
                    jsElemTitle.innerHTML = titlePrefix + " " + (i + 1);
                    var jsElemBody = document.createElement("code");
                    jsElemBody.className = "code-block black-block";
                    jsElemBody.innerHTML = "<pre>" + elem.content + "</pre>";
                    jsElem.appendChild(jsElemTitle);
                    jsElem.appendChild(jsElemBody);
                    rootElement.appendChild(jsElem);
                }
            }

            function main() {
                // display the assignment
                var codingTitle = document.getElementById("coding-title");
                codingTitle.innerHTML = quizData.title;

                var codingInstructions = document.getElementById("coding-instructions");
                if (quizData.hasInstructions) {
                    codingInstructions.innerHTML = quizData.instructions;
                } else {
                    codingInstructions.innerHTML = '<span class="italic-text">' + quizData.instructions + "</span>";
                }

                // display the test(s)
                var codingTests = document.getElementById("coding-tests");
                if (!quizData.hasTests) {
                    codingTests.innerHTML = '<span class="italic-text">' + quizData.tests + "</span>";
                } else {
                    renderCodeList(codingTests, quizData.tests, "coding-test", "Test");
                }

                // display the solution(s)
                var codingSolutions = document.getElementById("coding-solutions");
                if (!quizData.hasSolutions) {
                    codingSolutions.innerHTML = '<span class="italic-text">' + quizData.solutions + "</span>";
                } else {
                    renderCodeList(codingSolutions, quizData.solutions, "coding-solution", "Solution");
                }
            }
        </script>
    </body>
</html>