Re[3]: Кому-нибудь требуется начинающий питонист в подмастер
От: Lazytech Ниоткуда  
Дата: 02.06.19 12:22
Оценка:
Спасибо всем, кто посоветовал освоить другой язык программирования. Уже неделю грызу JavaScript и решаю простенькие тренировочные задачи, то и дело заглядывая на сайты вроде StackOverflow.
  Образец кода JavaScript...
/**
 * @param {number[]} A
 * @param {number[][]} queries
 * @return {number[]}
 */
var sumEvenAfterQueries = function(A, queries) {
    var n = A.length;
    var B = new Array(n);
    var sumOfEvens = 0;
    var idx;
    var val;
    
    for (var i = 0; i < n; i++) {
        if (A[i] % 2 == 0) {
            sumOfEvens += A[i];                    
        }        
    }    
    
    for (var i = 0; i < n; i++) {
        val = queries[i][0];
        idx = queries[i][1];
        
        if (A[idx] % 2 == 0) {
            sumOfEvens -= A[idx];            
        }
        
        A[idx] += val;
        
        if (A[idx] % 2 == 0) {
            sumOfEvens += A[idx];            
        }
        
        B[i] = sumOfEvens;          
    }
    
    return B;
};

  P.S. Еще два образца кода JavaScript...
DRY:
var numRookCaptures = function(board) {
    var r, c;
    var row, col;
    
    rook_search:
    for (r = 0; r < 8; r++) {
        for (c = 0; c < 8; c++) {
            if (board[r][c] == 'R') {
                row = r;
                col = c;
                break rook_search;
            }
        }
    }
    
    var captures = 0;
    
    function oneCapture(rStart, cStart, rStep, cStep) {
        for (r = rStart, c = cStart; ; r += rStep, c += cStep) {
            if (!board[r] || !board[r][c]) {
                return 0;            
            } else if (board[r][c] == 'p') {
                return 1;                
            } else if (board[r][c] != '.') {
                return 0;
            }
        }
    }
    
    captures += oneCapture(row-1, col, -1, 0);
    captures += oneCapture(row+1, col, 1, 0);
    captures += oneCapture(row, col-1, 0, -1);
    captures += oneCapture(row, col+1, 0, 1);
    
    return captures;
};

Runtime: 48 ms, faster than 96.87% of JavaScript online submissions for Available Captures for Rook.
Memory Usage: 33.8 MB, less than 45.44% of JavaScript online submissions for Available Captures for Rook.

WET:
var numRookCaptures = function(board) {
    var r, c;
    var row, col;
    
    rook_search: for (r = 0; r < 8; r++) {
        for (c = 0; c < 8; c++) {
            if (board[r][c] == 'R') {
                row = r;
                col = c;
                break rook_search;
            }
        }
    }
    
    var captures = 0;
    
    if (row > 0) {
        for (var r = row - 1; r > 0; r--) {
            if (board[r][col] == 'p') {
                captures++;
                break;
            } else if (board[r][col] != '.') {
                break;
            }
        }
    }        

    if (row < 7) {
        for (var r = row + 1; r < 8; r++) {
            if (board[r][col] == 'p') {
                captures++;
                break;
            } else if (board[r][col] != '.') {
                break;
            }
        }        
    }

    if (col > 0) {        
        for (var c = col - 1; c > 0; c--) {
            if (board[row][c] == 'p') {
                captures++;
                break;
            } else if (board[row][c] != '.') {
                break;
            }
        }
    }

    if (col < 7) {
        for (c = col + 1; c < 8; c++) {
            if (board[row][c] == 'p') {
                captures++;
                break;
            } else if (board[row][c] != '.') {
                break;
            }
        }
    }
    
    return captures;
};

Runtime: 60 ms, faster than 29.51% of JavaScript online submissions for Available Captures for Rook.
Memory Usage: 34 MB, less than 7.38% of JavaScript online submissions for Available Captures for Rook.

Оба образца являются решениями этой задачи:
Available Captures for Rook – LeetCode

Как нетрудно заметить, первый образец содержит гораздо меньше кода, чем второй.
Отредактировано 03.06.2019 5:12 Lazytech . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.