パスワード哲学
コード2020日2の出現
タスク:Xのどこに解決する.
X = the number of valid passwords
例入力
1-3 a: abcde
1-3 b: cdefg
2-9 c: ccccccccc
It represents:第1部
split()
with RegEx
split ()とregexの比較
split()
なぜなら、私は、正規表現を使用するのにはるかに少ない1-3 a: abcde
使用split
必要でした.別々に
['1-3 a', 'abcde']
最初の項目を'['1-3','a', 'abcde']
最初の項目の最初の項目を['1','3','a','abcde']
使用regex
簡単なアプローチを提供した.次の正規表現の各キャプチャグループに一致します
/(\d+)-(\d+) (\w): (\w+)/g
前のパズルからのヘルパー関数の活用
Part 1のパスワードポリシーでは、指定した文字が範囲の境界で指定された文字列内の位置にある必要があります.
この行の場合:
1-3 a: abcde
範囲は1,2,3
この行の場合:2-9 c: ccccccccc
範囲は2,3,4,5,6,7,8,9
このシリーズで以前に紹介されたパズルでは、2020年以降のパズルの一つを意味しています.const createRange = (lower, upper) => {
return new Array(upper - (lower - 1)).fill(0).map((item, index) => index + lower)
}
アルゴリズムの記述
Generate a list of matched capture groups for each line using the regular expression above
Filter that list to only include items where the following operations return 'true'
Create a range of numbers that span the lower and upper designated boundaries from the first and second captured groups
Check that list of numbers for the inclusion of a number that is equivalent to the number returned from the following operations:
Split the password string into an array of characters
Filter the list of characters to only include characters that match the character specified by this item's policy
Return the length of the filtered list
Return the length of the filtered list
私のアルゴリズムの可視化を示します.第2部
わずかに修正された作業アルゴリズムを書く
Generate a list of matched capture groups for each line using the regular expression above
Filter that list to only include items where the following operations return 'true'
Create a 2-element list containing the lower and upper designated boundaries from the first and second captured groups
Filter that list to include either 0, 1 or both numbers based on the following operations:
For each of the two numbers:
Split the password string into an array of characters
Remove N characters from the beginning of the list where N = the current number minus 1
Return true if the first character is the one specified in the policy
Return true if the filtered list only contains one number
Return the length of the filtered list
私のアルゴリズムの可視化を示します.実績
RegEx
の代わりにsplit()
このパズルをより雄弁に解決するにはReference
この問題について(パスワード哲学), 我々は、より多くの情報をここで見つけました https://dev.to/rmion/password-philosophy-30m9テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol