---
# System prepended metadata

title: DGM Interview with Solehjon

---

# DGM Interview with Solehjon

## Invert the case of a string.

Given a function:

```typescript
invertChar = (char: string): string =>
    char === char.toLowerCase() ? char.toUpperCase() : char.toLowerCase()
```

write a one-line function to invert the case of a string:

// abCdE => ABcDe

```typescript
invertString = (str: string): string => str.split('').map(char => invertChar(char)).join('')

```

## Given a list of strings, return a single string of the first character of each string in the array.

```typescript
const firstChars = (a: string[]): string => a.map(str => str[0]).join('') // ['h', 'w']
    let firstCharsStr = ""
    for (let i = 0; i < a.length; i++) {
        firstCharsStr += a[i][0]
    }
    return firstCharsStr
};
```

### Test Cases

```javascript
firstChars(["hello", "world"]) === "hw";
```

## Fix the bugs in this function to count reachable nodes in a directed graph.

```typescript
type Node<T> = {
    value: T,
    children: Node<T>[],
}

const countNodes<T> = (seen: Node<T>[]) => (root: Node<T>): number =>
    if (root.children.length == 0) {
        return 1;
    }
    root.children
        .filter(node => !seen.contains(node))
        .map((node) => countNodes([...seen, root])(node))
        .reduce((sum, x) => sum + x, 1);
```

// 

```javascript
const plus = (x) => (y) => x + y;
const plus1 = plus(1);
plus1(2) == 3;

```


## Given an array of numbers, return the greatest number without using sort.

```typescript
const greatest = (ns: number[]): number => ns.reduce((maxValue, value) => max(maxValue, value), -INF);
```


## Why doesn't 0.8 + 0.4 === 1.2?


0.5 + 0.5 == 1
0.25 + 0.25 === 0.5

0.9 + 0.25

3/4

1/3 0.3..

0.8 = 8/10 = 4/5
             1/2
             1/4
             
        0.1 + 0.25
        
0.8

1/4 => x * 2^(y), where x and y are integers


## Undo

a b c d f f f t g h
stack!

state = {
    name: "hello",
    age: -10,
}

state.age = 1;

dif0 = {
    name: "hello",
    age: -10,
}

dif1 = {
    age: 1,
}