Regex is such a nice tool, but unfortunately I’m using it rarely, so every time I use it it feels a bit awkward at the beginning.
I also use the already mentioned RegExr to write the expression first.
It’s always good to know about regex when solving some coding puzzles like Advent of Code. I used it there with Erlang
-module(day2).
-export([run/0]).
run()->
ParsedLines = load_file("day2input.txt"),
{part1(ParsedLines), part2(ParsedLines)}.
part1(ParsedLines)->
ValidLines = [ Line || Line <- ParsedLines, is_valid1(Line)],
length(ValidLines).
part2(ParsedLines)->
ValidLines = [ Line || Line <- ParsedLines, is_valid2(Line)],
length(ValidLines).
is_valid1({From, To, Char, Pw}) ->
N = length([[X] || X <- Pw, [X] =:= Char]),
(N >= From) and (N =< To).
is_valid2({Idx1, Idx2, Char, Pw}) ->
This file has been truncated. show original
-module(day4).
-export([run/0]).
run()->
Lines = load_file("day4input.txt"),
Passports = lists:map(fun(Line) -> parse_line(Line) end, Lines),
{ length(valid_passports_part1(Passports)), length(valid_passports_part2(Passports)) }.
parse_line(Line) ->
lists:map(fun(T) -> list_to_tuple(string:tokens(T, ":")) end, string:tokens(Line, " ")).
valid_passports_part1(Passports)->
lists:filter(fun(Passport) -> is_valid(Passport) end, Passports).
is_valid(Passport)->
lists:keymember("byr", 1, Passport) and lists:keymember("iyr", 1, Passport) and
lists:keymember("eyr", 1, Passport) and lists:keymember("hgt", 1, Passport) and
lists:keymember("hcl", 1, Passport) and lists:keymember("ecl", 1, Passport) and
lists:keymember("pid", 1, Passport).
This file has been truncated. show original
3 Likes