Информация об изменениях

Сообщение Re[2]: Python и JavaScript от 09.06.2019 14:54

Изменено 09.06.2019 15:04 Lazytech

Re[2]: Python и JavaScript
Здравствуйте, Serginio1, Вы писали:

S> А мне кажется, что знание Котлина или C# позволяет значительно быстрее освоить TypeScript. Учитывая аннотацию типов и сближение конструкций C#, учитывая общего для них создателя Хейлсберга


К сожалению, я не знаю ни Котлина (это вроде подмножество Java для Android?), ни C#. Мое первое сообщение в этой теме основано на том, что, начав изучать JavaScript, я уже через неделю, несмотря на весьма слабое знание этого языка, довольно-таки уверенно решал на нем тренировочные задачи, тогда как в случае с Python промежуток между началом изучения языка и переходом к практикуму составил пару месяцев.

Здравствуйте, Serginio1, Вы писали:

S> А мне кажется, что знание Котлина или C# позволяет значительно быстрее освоить TypeScript. Учитывая аннотацию типов и сближение конструкций C#, учитывая общего для них создателя Хейлсберга


К сожалению, я не знаю ни Котлина (это вроде подмножество Java для Android?), ни C#. Мое первое сообщение в этой теме основано на том, что, начав изучать JavaScript, я уже через неделю, несмотря на весьма слабое знание этого языка, довольно-таки уверенно решал на нем тренировочные задачи, тогда как в случае с Python промежуток между началом изучения языка и переходом к практикуму измерялся месяцами.

  P.S. Дабы не быть голословным...
Одна из первых задач, которую я решил на JavaScript:
/**
 * @param {string[]} words
 * @return {string}
 */
var longestWord = function(words) {
    totalWords = words.length;
    words.sort(function(a, b) { // Sort by word length
        return a.length - b.length;
    });
    var wordLen = 0;
    var maxLen = words[totalWords-1].length;
    var wordsByLen = new Array(maxLen);
    for (i in words) {
        j = words[i].length - 1;
        wordsByLen[j] = wordsByLen[j] || [];
        wordsByLen[j].push(words[i]);
    };

    wordsByLen2 = new Array(maxLen);
    wordsByLen2[0] = new Set(wordsByLen[0])

    // for (i = 0; i < wordsByLen2.length; i++) {
    for (i = 1; i < wordsByLen2.length; i++) {
        wordsByLen2[i] = new Set();
    }    

    var tryout = function(level, word, arr, arr2) {
        maxLen = arr.length;
        if (level < maxLen - 1) {
            for (j in arr[level+1]) {
                if (word == arr[level+1][j].slice(0, level+1)) {
                    if (!arr2[level+1].has(arr[level+1][j])) {
                        arr2[level+1].add(arr[level+1][j]);
                        tryout(level+1, arr[level+1][j], arr, arr2);
                    }
                }
            }            
        }
    }
    
    for (i in wordsByLen[0]) {
        tryout(0, wordsByLen[0][i], wordsByLen, wordsByLen2);        
    }
    
    if (!wordsByLen2[0]) {
        return "";
    };
    
    var longestWord = "";   
    var word = "";
    for (i = 0; i < wordsByLen2.length; i++) {
        if (wordsByLen2[i]) {
            for (word of wordsByLen2[i]) {
                if (!longestWord || longestWord.length < word.length || longestWord > word) {
                    longestWord = word;
                }
            };
        } else {
            break;
        }        
    }
    
    return longestWord;    
};
Re[2]: Python и JavaScript
Здравствуйте, Serginio1, Вы писали:

S> А мне кажется, что знание Котлина или C# позволяет значительно быстрее освоить TypeScript. Учитывая аннотацию типов и сближение конструкций C#, учитывая общего для них создателя Хейлсберга


К сожалению, я не знаю ни Котлина (это вроде подмножество Java для Android?), ни C#. Мое первое сообщение в этой теме основано на том, что, начав изучать JavaScript, я уже через неделю, несмотря на весьма слабое знание этого языка, довольно-таки уверенно решал на нем тренировочные задачи, тогда как в случае с Python промежуток между началом изучения языка и переходом к практикуму измерялся месяцами.

  P.S. Дабы не быть голословным...
Одна из первых задач, которую я решил на JavaScript:
/**
 * @param {string[]} words
 * @return {string}
 */
var longestWord = function(words) {
    totalWords = words.length;
    words.sort(function(a, b) { // Sort by word length
        return a.length - b.length;
    });
    var wordLen = 0;
    var maxLen = words[totalWords-1].length;
    var wordsByLen = new Array(maxLen);
    for (i in words) {
        j = words[i].length - 1;
        wordsByLen[j] = wordsByLen[j] || [];
        wordsByLen[j].push(words[i]);
    };

    wordsByLen2 = new Array(maxLen);
    wordsByLen2[0] = new Set(wordsByLen[0])

    // for (i = 0; i < wordsByLen2.length; i++) {
    for (i = 1; i < wordsByLen2.length; i++) {
        wordsByLen2[i] = new Set();
    }    

    var tryout = function(level, word, arr, arr2) {
        maxLen = arr.length;
        if (level < maxLen - 1) {
            for (j in arr[level+1]) {
                if (word == arr[level+1][j].slice(0, level+1)) {
                    if (!arr2[level+1].has(arr[level+1][j])) {
                        arr2[level+1].add(arr[level+1][j]);
                        tryout(level+1, arr[level+1][j], arr, arr2);
                    }
                }
            }            
        }
    }
    
    for (i in wordsByLen[0]) {
        tryout(0, wordsByLen[0][i], wordsByLen, wordsByLen2);        
    }
    
    if (!wordsByLen2[0]) {
        return "";
    };
    
    var longestWord = "";   
    var word = "";
    for (i = 0; i < wordsByLen2.length; i++) {
        if (wordsByLen2[i]) {
            for (word of wordsByLen2[i]) {
                if (!longestWord || longestWord.length < word.length || longestWord > word) {
                    longestWord = word;
                }
            };
        } else {
            break;
        }        
    }
    
    return longestWord;    
};