Last active
July 26, 2021 18:48
-
-
Save tashima42/cbb2caafec9fda2934ce782e53f0a5ef to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "sortingAlgorithms": [ | |
| { | |
| "id": "ordenacao-1", | |
| "subject": "Algoritmos de ordenação", | |
| "text": "\nQuantas trocas são necessárias para que a sequência abaixo seja ordenada de modo crescente?\n```\n{sequencia=1:10:{6:10}}\n```\nUtilize o seguinte método de ordenação:\n```\n{metodo}\n```\n<metodo>\n <sort value=\"bubble\">void bubbleSort(int arr[], int n)</sort>\n <sort value=\"selection\">void selectionSort(int arr[], int n)</sort>\n <sort value=\"insertion\">void insertionSort(int arr[], int n)</sort>\n</metodo>\n---\nAlguma dúvida? Consulte a referência para esta questão [aqui](http://google.com.br).\n ", | |
| "answer": "function (values, blocks) {\n const arr = [...values.sequencia];\n const metodo = blocks.metodo;\n const resp = [];\n let swapCounter = 0;\n\n switch (metodo) {\n case 'bubble':\n let swapped;\n\n do {\n swapped = false;\n\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] > arr[i + 1]) {\n swapCounter++; // incrementar a qtd de trocas feitas\n\n let tmp = arr[i];\n arr[i] = arr[i + 1];\n arr[i + 1] = tmp;\n swapped = true;\n }\n }\n } while (swapped);\n\n resp.push(swapCounter);\n break;\n\n case 'selection':\n for (let i = 0; i < arr.length; i++) {\n // Encontrar o menor numero no subarray\n let min = i;\n\n for (let j = i + 1; j < arr.length; j++) {\n if (arr[j] < arr[min]) {\n min = j;\n }\n }\n\n if (min != i) {\n // Trocar os elementos\n let tmp = arr[i];\n arr[i] = arr[min];\n arr[min] = tmp;\n swapCounter++; // incrementar a qtd de trocas feitas\n }\n }\n\n resp.push(swapCounter);\n break;\n\n case 'insertion':\n for (let i = 1; i < arr.length; i++) {\n // Escolhendo o primeiro elemento no subarray nao ordenado\n let current = arr[i]; // O ultimo elemento do array ordenado\n\n let j = i - 1;\n\n while (j > -1 && current < arr[j]) {\n arr[j + 1] = arr[j];\n j--;\n swapCounter++; // incrementar a qtd de trocas feitas\n }\n\n arr[j + 1] = current;\n }\n\n resp.push(swapCounter);\n break;\n\n default:\n resp.push(-1);\n break;\n }\n\n return resp;\n }", | |
| "level": 2, | |
| "keywords": [ | |
| "keyword1", | |
| "keyword2" | |
| ] | |
| }, | |
| { | |
| "id": "ordenacao-2", | |
| "text": "\nQuantas trocas são necessárias para que a sequência abaixo seja ordenada de modo crescente?\n```\n{sequencia=1:10:{6:10}}\n```\nUtilize o seguinte método de ordenação:\n```\n{metodo}\n```\n<metodo>\n <sort value=\"bubble\">void bubbleSort(int arr[], int n)</sort>\n <sort value=\"selection\">void selectionSort(int arr[], int n)</sort>\n <sort value=\"insertion\">void insertionSort(int arr[], int n)</sort>\n</metodo>\n---\nAlguma dúvida? Consulte a referência para esta questão [aqui](http://google.com.br).\n ", | |
| "answer": "function (values, blocks) {\n const arr = [...values.sequencia];\n const metodo = blocks.metodo;\n const resp = [];\n let swapCounter = 0;\n\n switch (metodo) {\n case 'bubble':\n let swapped;\n\n do {\n swapped = false;\n\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] > arr[i + 1]) {\n swapCounter++; // incrementar a qtd de trocas feitas\n\n let tmp = arr[i];\n arr[i] = arr[i + 1];\n arr[i + 1] = tmp;\n swapped = true;\n }\n }\n } while (swapped);\n\n resp.push(swapCounter);\n break;\n\n case 'selection':\n for (let i = 0; i < arr.length; i++) {\n // Encontrar o menor numero no subarray\n let min = i;\n\n for (let j = i + 1; j < arr.length; j++) {\n if (arr[j] < arr[min]) {\n min = j;\n }\n }\n\n if (min != i) {\n // Trocar os elementos\n let tmp = arr[i];\n arr[i] = arr[min];\n arr[min] = tmp;\n swapCounter++; // incrementar a qtd de trocas feitas\n }\n }\n\n resp.push(swapCounter);\n break;\n\n case 'insertion':\n for (let i = 1; i < arr.length; i++) {\n // Escolhendo o primeiro elemento no subarray nao ordenado\n let current = arr[i]; // O ultimo elemento do array ordenado\n\n let j = i - 1;\n\n while (j > -1 && current < arr[j]) {\n arr[j + 1] = arr[j];\n j--;\n swapCounter++; // incrementar a qtd de trocas feitas\n }\n\n arr[j + 1] = current;\n }\n\n resp.push(swapCounter);\n break;\n\n default:\n resp.push(-1);\n break;\n }\n\n return resp;\n }", | |
| "subject": "sortingAlgorithms", | |
| "level": 3, | |
| "keywords": [ | |
| "tag2" | |
| ] | |
| } | |
| ], | |
| "searchingAlgorithms": [ | |
| { | |
| "id": "busca-1", | |
| "subject": "Algoritmos de busca", | |
| "text": "\nSuponha que você está realizando uma busca sequencial no vetor: `[{vet=3:13:+{6:11}}]`\n\nQuantas comparações serão realizadas se o valor buscado for **{valor=3:13}**?\n }", | |
| "answer": "function (values) {\n const {\n vet,\n valor\n } = values;\n let answer = []; // resposta a ser retornada\n\n for (let i = 0; i < vet.length; i++) {\n if (vet[i] == valor) {\n answer.push(i + 1);\n return answer;\n }\n }\n\n answer.push(vet.length + 1);\n return answer;\n }", | |
| "level": 1, | |
| "keywords": [ | |
| "busca sequencial", | |
| "busca" | |
| ] | |
| }, | |
| { | |
| "id": "busca-2", | |
| "subject": "Algoritmos de busca", | |
| "text": "Considere o método de busca sequencial em um vetor contendo os elementos: `[{vet=2:23:+{5:10}}]` \n \nQual deve ser o retorno da busca quando o usuário pesquisar pelo item **{valor=2:23}**?\n ", | |
| "answer": "function (values) {\n const {\n vet,\n valor\n } = values;\n let answer = [];\n\n for (let i = 0; i < vet.length; i++) {\n if (vet[i] == valor) {\n answer.push(i);\n return answer;\n }\n }\n\n answer.push(-1);\n return answer;\n }", | |
| "level": 1, | |
| "keywords": [ | |
| "busca sequencial", | |
| "busca" | |
| ] | |
| }, | |
| { | |
| "id": "busca-3", | |
| "subject": "Algoritmos de busca", | |
| "text": "\nSuponha que seja feita uma busca sequencial otimizada no vetor a seguir, o qual deve ser ordenado antes da busca. \n```\n[{vet=1:10:{5:10}}]\n``` \nQuantas comparações serão realizadas se o valor a ser buscado for **{valor=1:10}**?\n ", | |
| "answer": "function (values) {\n const {\n vet,\n valor\n } = values;\n const answer = [];\n\n const BubbleSort = originalArray => {\n // Make a copy of the original array\n let arr = [...originalArray];\n let swapped;\n\n do {\n swapped = false;\n\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] > arr[i + 1]) {\n let tmp = arr[i];\n arr[i] = arr[i + 1];\n arr[i + 1] = tmp;\n swapped = true;\n }\n }\n } while (swapped);\n\n return arr;\n }; // Ordenar vetor usando Bubble Sort\n\n\n let sortedArray = BubbleSort(vet); // Realizar busca sequencial no vetor ordenado\n\n for (let i = 0; i < sortedArray.length; i++) {\n if (sortedArray[i] == valor) {\n answer.push(i + 1);\n return answer;\n }\n }\n\n answer.push(sortedArray.length);\n return answer;\n }", | |
| "level": 1, | |
| "keywords": [ | |
| "busca", | |
| "busca otimizada", | |
| "busca sequencial" | |
| ] | |
| } | |
| ], | |
| "stack": [ | |
| { | |
| "id": "pilha-1", | |
| "subject": "Pilha estática e dinâmica", | |
| "text": "\nConsiderando a função a seguir que recebe um número como argumento e utiliza a pilha S para processá-lo.\n\nO que será impresso quando **fun({n=5:10})** for chamado?\n```\nvoid fun(int n) {\n stack S; \n while (n > 1) {\n push(&S, n%2);\n n = n/2;\n \\}\n while (!isEmpty(&S))\n printf(\"%d \", pop(&S));\n\\}\n```\n", | |
| "answer": "function (values) {\n let {\n n\n } = values;\n let stack = []; // Armazenar o retorno de cada item removido da pilha que será usado para a resposta final da questão\n\n let poppedItems = [];\n\n while (n > 1) {\n stack.push(n % 2);\n n = n / 2;\n }\n\n while (stack.length) {\n poppedItems.push(stack.pop());\n }\n\n return poppedItems;\n }", | |
| "level": 1, | |
| "keywords": [ | |
| "pilha", | |
| "simulação" | |
| ] | |
| } | |
| ], | |
| "queue": [ | |
| { | |
| "id": "fila-1", | |
| "subject": "Fila", | |
| "text": "Se os elementos abaixo são adicionados a uma fila e são depois removidos da fila, em qual ordem eles serão removidos? `[{vet=1:10:{3:6}}]`", | |
| "answer": "function (values) {\n const {\n vet\n } = values;\n let inputArr = [...vet]; // copiar o vetor\n\n let answer = []; // resposta a ser retornada\n\n while (inputArr.length) {\n answer.push(inputArr.shift());\n }\n\n return answer;\n }", | |
| "level": 1, | |
| "keywords": [ | |
| "ordem de remoção", | |
| "fila" | |
| ] | |
| } | |
| ], | |
| "linkedList": [ | |
| { | |
| "id": "lista-1", | |
| "subject": "Lista encadeada", | |
| "text": "\nA lista duplamente encadeada **l** possui os seguintes elementos:\n```\n{lista=1:10:5}\n```\nSabendo que a função **addNode** cria e insere um novo nó entre os nós **ant** e **prox** que são recebidos por parâmetro.\n```\nnode *addNode(node *ant, int valor, node *prox) {\n ...\n\\}\n```\nQual a nova sequência da lista, após a execução das seguintes instruções?\n``` \naddNode(l→first, {a=1:10}, l→first→prox);\naddNode(addNode(l->last->ant, {b=1:10}, l->last), {c=1:10}, l->last);\n``` \n ", | |
| "answer": "function (values) {\n let {\n lista,\n a,\n b,\n c\n } = values;\n let _lista = [...lista]; // Simulate a Doubly Linked List behaviour using an Array\n // Simulate first instruction => addNode(l→first, \"a\", l→first→prox);\n\n _lista.splice(1, 0, a); // Simulate second instruction => addNode(addNode(l->last->ant, \"b\", l->last), \"c\", l->last);\n\n\n _lista.splice(_lista.length - 1, 0, b);\n\n _lista.splice(_lista.length - 1, 0, c);\n\n return _lista;\n }", | |
| "level": 2, | |
| "keywords": [ | |
| "lista", | |
| "lista duplamente encadeada" | |
| ] | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment