Este projeto contém soluções para um conjunto de problemas propostos em um processo seletivo. As soluções foram implementadas em TypeScript.
Dado o trecho de código:
function calculateSum(): void {
const INDEX = 13;
let SUM = 0;
let K = 0;
while (K < INDEX) {
K += 1;
SUM += K;
}
console.log(SUM);
}
calculateSum();
Ao final do processamento, o valor da variável SUM
será 91.
Dado um número, o programa verifica se ele pertence à sequência de Fibonacci.
import * as readline from 'readline';
function isFibonacci(n: number): boolean {
let a = 0, b = 1;
while (b < n) {
[a, b] = [b, a + b];
}
return b === n || n === 0;
}
function mainFibonacci(): void {
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("Enter a number: ", (answer) => {
const number = parseInt(answer, 10);
if (isFibonacci(number)) {
console.log(`The number ${number} belongs to the Fibonacci sequence.`);
} else {
console.log(`The number ${number} does not belong to the Fibonacci sequence.`);
}
rl.close();
});
}
mainFibonacci();
Dado um vetor que guarda o valor de faturamento diário de uma distribuidora, o programa calcula:
- O menor valor de faturamento ocorrido em um dia do mês;
- O maior valor de faturamento ocorrido em um dia do mês;
- Número de dias no mês em que o valor de faturamento diário foi superior à média mensal.
import * as fs from 'fs';
interface Billing {
day: number;
value: number;
}
function calculateBilling(data: Billing[]): [number, number, number] {
const values = data.filter(day => day.value > 0).map(day => day.value);
const minValue = Math.min(...values);
const maxValue = Math.max(...values);
const monthlyAverage = values.reduce((acc, val) => acc + val, 0) / values.length;
const daysAboveAverage = values.filter(value => value > monthlyAverage).length;
return [minValue, maxValue, daysAboveAverage];
}
function main(): void {
const data: Billing[] = JSON.parse(fs.readFileSync('billing.json', 'utf-8'));
const [minValue, maxValue, daysAboveAverage] = calculateBilling(data);
console.log(`Lowest billing value: ${minValue}`);
console.log(`Highest billing value: ${maxValue}`);
console.log(`Days with billing above average: ${daysAboveAverage}`);
}
main();
Dado o valor de faturamento mensal de uma distribuidora detalhado por estado, o programa calcula o percentual de representação que cada estado teve dentro do valor total mensal da distribuidora.
interface Billing {
[state: string]: number;
}
function calculatePercentage(billing: Billing): { [state: string]: number } {
const total = Object.values(billing).reduce((acc, val) => acc + val, 0);
const percentages = Object.fromEntries(
Object.entries(billing).map(([state, value]) => [state, (value / total) * 100])
);
return percentages;
}
function mainPercentage(): void {
const billing: Billing = {
"SP": 67836.43,
"RJ": 36678.66,
"MG": 29229.88,
"ES": 27165.48,
"Others": 19849.53
};
const percentages = calculatePercentage(billing);
for (const [state, percentage] of Object.entries(percentages)) {
console.log(`${state}: ${percentage.toFixed(2)}%`);
}
}
mainPercentage();
O programa inverte os caracteres de uma string sem usar funções prontas.
import * as readline from 'readline';
function reverseString(s: string): string {
let reversedS = "";
for (const char of s) {
reversedS = char + reversedS;
}
return reversedS;
}
function mainReverse(): void {
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("Enter a string: ", (answer) => {
console.log(`Reversed string: ${reverseString(answer)}`);
rl.close();
});
}
mainReverse();
- Certifique-se de ter o Node.js instalado.
- Clone este repositório.
- Navegue até o diretório do projeto.
- Instale as dependências:
npm install
- Execute o script principal:
npm start
src/index.ts
: Arquivo principal que executa todos os problemas em cascata.src/problem1.ts
: Solução para o problema 1.src/problem2.ts
: Solução para o problema 2.src/problem3.ts
: Solução para o problema 3.src/problem4.ts
: Solução para o problema 4.src/problem5.ts
: Solução para o problema 5.package.json
: Arquivo de configuração do projeto..gitignore
: Arquivo para ignorar arquivos desnecessários no Git.
Este projeto está licenciado sob a licença ISC.