-
Notifications
You must be signed in to change notification settings - Fork 0
/
acme.js
97 lines (79 loc) · 2.39 KB
/
acme.js
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
// Generated by CoffeeScript 1.3.3
(function() {
var compressorLigado, custos, desligarCompressor, estado, ligarCompressor, mudarTemp, printMsg, reduzUmGrau, reduzUmGrauAssinc, refrigera, seg, teste, verbose, _i, _ref;
custos = {
ligarCompressor: 50,
reduzirGrau: 10
};
teste = {
tempo: 360,
mudanca: 0.5,
tempInicial: 30,
tempDesejada: 20
};
estado = {
temp: teste.tempInicial,
custo: 0,
compressorLigado: false,
reducaoEmProgresso: false
};
verbose = false;
process.argv.forEach(function(val, index, array) {
if (val === "verbose") {
return verbose = true;
}
});
printMsg = function(msg) {
if (verbose) {
return console.log(msg);
}
};
mudarTemp = function() {
return estado.temp += teste.mudanca;
};
compressorLigado = function() {
return estado.compressorLigado;
};
ligarCompressor = function() {
if (!compressorLigado()) {
estado.compressorLigado = true;
estado.custo += custos.ligarCompressor;
return printMsg("(compressor ligado @ " + seg + " seg/ " + estado.temp + " Celsius)");
}
};
desligarCompressor = function() {
estado.compressorLigado = false;
return printMsg("(compressor desligado @ " + seg + " seg/ " + estado.temp + " Celsius)");
};
reduzUmGrau = function() {
estado.custo += custos.reduzirGrau;
return estado.temp--;
};
reduzUmGrauAssinc = function() {
estado.reducaoEmProgresso = true;
return reduz_um_grau_assinc(function() {
estado.reducaoEmProgresso = false;
estado.custo += custos.reduzirGrau;
return estado.temp--;
});
};
refrigera = function(tempAtual, tempDesejada) {
var erroPermitido;
erroPermitido = 2;
if ((!compressorLigado() && tempAtual > tempDesejada + erroPermitido) || (compressorLigado() && tempAtual > tempDesejada - erroPermitido)) {
ligarCompressor();
tempAtual = reduzUmGrau();
}
if (tempAtual <= tempDesejada - erroPermitido) {
desligarCompressor();
}
return estado;
};
seg = 0;
for (seg = _i = 1, _ref = teste.tempo; 1 <= _ref ? _i <= _ref : _i >= _ref; seg = 1 <= _ref ? ++_i : --_i) {
refrigera(estado.temp, teste.tempDesejada);
mudarTemp(teste.mudanca);
}
desligarCompressor();
console.log("Resultado: " + seg + "seg " + estado.temp + " graus Celsius, custo R$" + ((estado.custo / 100).toFixed(2)) + "\n");
}).call(this);