Skip to content

Commit 0fffc86

Browse files
committed
🚨 added challenge 14
1 parent 8a02f49 commit 0fffc86

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed

readme.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ Para esta versión estaré usando TypeScript, en su versión 5.3.2.
3232
| 11 | [**Los elfos estudiosos**](https://adventjs.dev/es/challenges/2023/11) | 🟠 | [TS](./src/challenges/11.ts) | [SPEC](./src/tests/11.spec.ts) |
3333
| 12 | [**Es una copia válida?**](https://adventjs.dev/es/challenges/2023/12) | 🟠 | [TS](./src/challenges/12.ts) | [SPEC](./src/tests/12.spec.ts) |
3434
| 13 | [**Calculando el tiempo**](https://adventjs.dev/es/challenges/2023/13) | 🟢 | [TS](./src/challenges/13.ts) | [SPEC](./src/tests/13.spec.ts) |
35+
| 14 | [**Evita la alarma**](https://adventjs.dev/es/challenges/2023/14) | 🟠 | [TS](./src/challenges/14.ts) | [SPEC](./src/tests/14.spec.ts) |
3536

3637
## Herramientas utilizadas 🛠️
3738

src/challenges/14.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
export function maxGifts (houses: number[]): number {
2+
const dp = houses.slice(0, 2)
3+
for (const house of houses.slice(2)) {
4+
const last = dp[dp.length - 1]
5+
const secondLast = dp[dp.length - 2] + house
6+
dp.push([last, secondLast][+(last < secondLast)])
7+
}
8+
return dp[dp.length - 1]
9+
}

src/tests/14.spec.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { test, expectTypeOf, expect, describe } from 'vitest'
2+
import { maxGifts } from '../challenges/14'
3+
4+
describe('Challenge #14', () => {
5+
test('Test #01', () => {
6+
expectTypeOf(maxGifts).returns.toEqualTypeOf(0)
7+
})
8+
9+
test('Test #02', () => {
10+
expect(maxGifts([1, 2, 3, 1])).toEqual(4)
11+
})
12+
13+
test('Test #03', () => {
14+
expect(maxGifts([2, 7, 9, 3, 1])).toEqual(12)
15+
})
16+
17+
test('Test #04', () => {
18+
expect(maxGifts([0, 0, 0, 0, 1])).toEqual(1)
19+
})
20+
21+
test('Test #05', () => {
22+
expect(maxGifts([100])).toEqual(100)
23+
})
24+
25+
test('Test #06', () => {
26+
expect(maxGifts([1, 1, 1])).toEqual(2)
27+
})
28+
29+
test('Test #07', () => {
30+
expect(maxGifts([3, 4, 5])).toEqual(8)
31+
})
32+
33+
test('Test #08', () => {
34+
expect(maxGifts([99])).toEqual(99)
35+
})
36+
})

0 commit comments

Comments
 (0)