распространение данных в векторе

Объектно-ориентированный подход был бы рядом правил. Присвойте вес каждому правилу и выполните итерации через них. В psuedo-коде:

abstract class Rule {

    float weight;

    float calculateScore( string password );

}

Вычисление общего счета:

float getPasswordStrength( string password ) {     

    float totalWeight = 0.0f;
    float totalScore  = 0.0f;

    foreach ( rule in rules ) {

       totalWeight += weight;
       totalScore  += rule.calculateScore( password ) * rule.weight;

    }

    return (totalScore / totalWeight) / rules.count;

}

алгоритм правила в качестве примера, на основе количества существующих классов символов:

float calculateScore( string password ) {

    float score = 0.0f;

    // NUMBER_CLASS is a constant char array { '0', '1', '2', ... }
    if ( password.contains( NUMBER_CLASS ) )
        score += 1.0f;

    if ( password.contains( UPPERCASE_CLASS ) )
        score += 1.0f;

    if ( password.contains( LOWERCASE_CLASS ) )
        score += 1.0f;

    // Sub rule as private method
    if ( containsPunctuation( password ) )
        score += 1.0f;

    return score / 4.0f;

}
10
задан jogo 8 January 2016 в 21:25
поделиться

2 ответа

В пакете zoo есть функция na.locf () :

R> library("zoo")
R> na.locf(c(1, 2, 3, 4))
[1] 1 2 3 4
R> na.locf(c(1, NA, NA, 2, 3, NA, 4))
[1] 1 1 1 2 3 3 4

na.locf : Последний Продолжение наблюдения; Универсальная функция для замены каждого «NA» самым последним не-NA перед ним.

См. Исходный код функции na.locf.default , для нее не требуется для -контур.

14
ответ дан 3 December 2019 в 15:22
поделиться

Я делаю минимальное копирование и вставку из библиотеки зоопарка (еще раз спасибо rcs за то, что указали мне на это), и это то, что мне действительно нужно:

fillInTheBlanks <- function(S) {
  ## NA in S are replaced with observed values

  ## accepts a vector possibly holding NA values and returns a vector
  ## where all observed values are carried forward and the first is
  ## also carried backward.  cfr na.locf from zoo library.
  L <- !is.na(S)
  c(S[L][1], S[L])[cumsum(L)+1]
}
13
ответ дан 3 December 2019 в 15:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: