Solved 2015/05 part 2

This commit is contained in:
FrederikBaerentsen 2024-11-30 19:20:09 +01:00
parent d2d97b442b
commit 0e83d8f589
3 changed files with 21 additions and 46 deletions

View File

@ -28,8 +28,6 @@ How many strings are nice?
Your puzzle answer was `236`. Your puzzle answer was `236`.
The first half of this puzzle is complete! It provides one gold star: \*
## \-\-- Part Two \-\-- {#part2} ## \-\-- Part Two \-\-- {#part2}
Realizing the error of his ways, Santa has switched to a better model of Realizing the error of his ways, Santa has switched to a better model of
@ -60,8 +58,14 @@ For example:
How many strings are nice under these new rules? How many strings are nice under these new rules?
Answer: Your puzzle answer was `51`.
Although it hasn\'t changed, you can still [get your puzzle Both parts of this puzzle are complete! They provide two gold stars:
\*\*
At this point, you should [return to your Advent calendar](/2015) and
try another puzzle.
If you still want to see it, you can [get your puzzle
input](5/input). input](5/input).

View File

@ -46,47 +46,16 @@ if part == 1:
# # # #
######################################### #########################################
def find_non_overlapping_pairs(string):
pattern = r'(..).*?\1'
matches = re.findall(pattern, string)
return list(set(matches))
def isNaughty2(inst): def isNaughty2(inst):
# bad_words = ['ab','cd','pq','xy'] for i in range(0,len(inst)-2):
if inst[i] == inst[i+2] and len(find_non_overlapping_pairs(inst)) > 0:
# if any(w in inst for w in bad_words): return False
# return True return True
# if sum(inst.lower().count(v) for v in "aeiou") < 3:
# return True
# for i in range(0,len(inst)-1):
# if inst[i] == inst[i+1]:
# return False
# return True
pairs = []
for i in range(0,len(inst)-1):
tmp = inst[i]+inst[i+1]
pairs.append(tmp)
#print(inst)
#print(pairs)
n_pairs = []
sdx = 0
while sdx < len(pairs)-2:
#for sdx in range(0,len(pairs)-1):
if pairs[sdx] != pairs[sdx+1]:
n_pairs.append(pairs[sdx])
if pairs[sdx] == pairs[sdx+1] and pairs[sdx] == pairs[sdx+2]:
n_pairs.append(pairs[sdx])
n_pairs.append(pairs[sdx+2])
sdx+=1
#print(n_pairs)
opt = [item for item in set(pairs) if n_pairs.count(item) > 1]
#print(opt)
if len(opt) > 0:
for i in range(0,len(inst)-2):
if inst[i] == inst[i+2]:
print(inst[i], inst[i+1],inst[i+2])
return False
return True
return True
if part == 2: if part == 2:
instructions = [] instructions = []
@ -98,7 +67,5 @@ if part == 2:
for inst in instructions: for inst in instructions:
if not isNaughty2(inst): if not isNaughty2(inst):
#print('Nice')
count += 1 count += 1
#input()
print(count) print(count)

View File

@ -1,2 +1,6 @@
aaaa aaaa
aaa
aaabcb aaabcb
xxyxyxx
xxxyyx
hejejk