- 001
 - 002
 - 003
 - 004
 - 005
 - 006
 - 007
 - 008
 - 009
 - 010
 - 011
 - 012
 - 013
 - 014
 - 015
 - 016
 - 017
 - 018
 - 019
 - 020
 - 021
 - 022
 - 023
 - 024
 - 025
 - 026
 - 027
 - 028
 - 029
 - 030
 - 031
 - 032
 - 033
 - 034
 - 035
 - 036
 - 037
 - 038
 - 039
 - 040
 - 041
 - 042
 - 043
 - 044
 - 045
 - 046
 - 047
 - 048
 - 049
 - 050
 - 051
 - 052
 - 053
 - 054
 - 055
 - 056
 - 057
 - 058
 - 059
 - 060
 - 061
 - 062
 - 063
 - 064
 - 065
 - 066
 - 067
 - 068
 - 069
 - 070
 - 071
 - 072
 - 073
 - 074
 - 075
 - 076
 - 077
 - 078
 - 079
 - 080
 - 081
 - 082
 - 083
 - 084
 - 085
 - 086
 - 087
 - 088
 - 089
 - 090
 - 091
 - 092
 - 093
 - 094
 - 095
 - 096
 - 097
 - 098
 - 099
 - 100
 
                        class Node<T> {
    v: T;
    k: string;
    next: Node<T>;
}
class Map<T> {
    head: Node<T>;
    getElt(k: string): T {
        return mapGet(this, k)
    }
    setElt(k: string, v: T) {
        mapSet(this, k, v)
    }
}
function mapSet<T>(m: Map<T>, k: string, v: T) {
    for (let p = m.head; p != null; p = p.next) {
        if (p.k == k) {
            p.v = v
            return
        }
    }
    let n = new Node<T>()
    n.next = m.head
    n.k = k
    n.v = v
    m.head = n
}
function mapGet<T>(m: Map<T>, k: string): T {
    for (let p = m.head; p != null; p = p.next) {
        if (p.k == k) {
            return p.v
        }
    }
    return null
}
function search_array<T>(a: T[], item: T): number {
    for (let i = 0; i < a.length; i++) {
        if (a[i] == item) {
            return i
        }
    }
    return -1 // NOT FOUND
}
class MyMap<K, V> {
    keys: K[]
    values: V[]
    constructor() {
        this.keys = []
        this.values = []
    }
    push(key: K, value: V) {
        this.keys.push(key)
        this.values.push(value)
    }
    value_for(key: K): V {
        let i = search_array(this.keys, key)
        if (i == -1) {
            return null
        }
        return this.values[i]
    }
    key_for(value: V): K {
        let i = search_array(this.values, value)
        if (i == -1) {
            return null
        }
        return this.keys[i]
    }
    set(key: K, value: V): void {
        let i = search_array(this.keys, key)
        if (i == -1) {
            this.keys.push(key)
            this.values.push(value)
        } else {
            this.values[i] = value
        }
    }
    has_key(key: K): boolean {
        return search_array(this.keys, key) != -1
    }
    has_value(value: V): boolean {
        return search_array(this.values, value) != -1
    }
}
                                 
        
            Срочно нужна помощь...  не могу решить что делать с функцией mapGet .. когда T - number  я не могу использовать "null" .. должен я хакнуть компилятор или изменить тестовый пример?
        
        
Как йажа не надо
Коля любит Намба
Толя любит Намба
Я думал ты серьезный язык делаегшь, а ты копируешь поведение жопаскрипта
А вот как представить неисчисляемое?
Правда, если тип должен быть примитивным, на этом мои полномочия всё.
UPD: а потом я разглядел слово "предела"
type float64 = TypeOf<1.0>
Нырнул, и рыба застряла во рту