You can also Ctrl+click most things in the code editor to open its documentation.
You can also Ctrl+click most things in the code editor to open its documentation.
When I was 100%-ing Watch Dogs, I would see and hear the icon for hacking gates and doors whenever I went past them.
When I originally played Fallout 4, I would feel a compulsion to take any duct tape I saw.
https://steamstat.us/ shows that it’s down for scheduled maintenance.
Part 1: https://github.com/porotoman99/Advent-of-Code-2023/blob/main/Day 7/part1.py
import os
filePath = os.path.dirname(os.path.realpath(__file__))
inputFilePath = filePath + "\\adventofcode.com_2023_day_7_input.txt"
# inputFilePath = filePath + "\\part1.txt"
def typeSort(hand):
cardCount = {
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0,
"T": 0,
"J": 0,
"Q": 0,
"K": 0,
"A": 0
}
for card in hand:
cardCount[card] += 1
cardTotals = list(cardCount.values())
cardTotals.sort(reverse=True)
if(cardTotals[0] == 5):
return 6
elif(cardTotals[0] == 4):
return 5
elif(cardTotals[0] == 3 and cardTotals[1] == 2):
return 4
elif(cardTotals[0] == 3):
return 3
elif(cardTotals[0] == 2 and cardTotals[1] == 2):
return 2
elif(cardTotals[0] == 2):
return 1
else:
return 0
def bucketSort(camelCard):
totalScore = 0
cardOrder = ["2","3","4","5","6","7","8","9","T","J","Q","K","A"]
hand = camelCard[0]
totalScore += cardOrder.index(hand[4]) * 15 ** 1
totalScore += cardOrder.index(hand[3]) * 15 ** 2
totalScore += cardOrder.index(hand[2]) * 15 ** 3
totalScore += cardOrder.index(hand[1]) * 15 ** 4
totalScore += cardOrder.index(hand[0]) * 15 ** 5
return totalScore
hands = []
bids = []
with open(inputFilePath) as inputFile:
for line in inputFile:
lineSplit = line.split()
hand = lineSplit[0]
bid = lineSplit[1]
hands.append(hand)
bids.append(bid)
bids = [int(bid) for bid in bids]
camelCards = list(zip(hands,bids))
typeBuckets = [[],[],[],[],[],[],[]]
for camelCard in camelCards:
hand = camelCard[0]
typeScore = typeSort(hand)
typeBuckets[typeScore].append(camelCard)
finalCardSort = []
for bucket in typeBuckets:
if(len(bucket) > 1):
bucket.sort(key=bucketSort)
for camelCard in bucket:
finalCardSort.append(camelCard)
camelScores = []
for camelIndex in range(len(finalCardSort)):
scoreMultiplier = camelIndex + 1
camelCard = finalCardSort[camelIndex]
camelScores.append(camelCard[1] * scoreMultiplier)
print(sum(camelScores))
Part 2: https://github.com/porotoman99/Advent-of-Code-2023/blob/main/Day 7/part2.py
import os
filePath = os.path.dirname(os.path.realpath(__file__))
inputFilePath = filePath + "\\adventofcode.com_2023_day_7_input.txt"
# inputFilePath = filePath + "\\part1.txt"
def typeSort(hand):
cardCount = {
"J": 0,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0,
"T": 0,
"Q": 0,
"K": 0,
"A": 0
}
for card in hand:
cardCount[card] += 1
jokerCount = cardCount["J"]
cardCount["J"] = 0
cardTotals = list(cardCount.values())
cardTotals.sort(reverse=True)
if(cardTotals[0] + jokerCount == 5):
return 6
elif(cardTotals[0] + jokerCount == 4):
return 5
elif(
cardTotals[0] + jokerCount == 3 and cardTotals[1] == 2
or cardTotals[0] == 3 and cardTotals[1] + jokerCount == 2
):
return 4
elif(cardTotals[0] + jokerCount == 3):
return 3
elif(
cardTotals[0] + jokerCount == 2 and cardTotals[1] == 2
or cardTotals[0] == 2 and cardTotals[1] + jokerCount == 2
):
return 2
elif(cardTotals[0] + jokerCount == 2):
return 1
else:
return 0
def bucketSort(camelCard):
totalScore = 0
cardOrder = ["J","2","3","4","5","6","7","8","9","T","Q","K","A"]
hand = camelCard[0]
totalScore += cardOrder.index(hand[4]) * 15 ** 1
totalScore += cardOrder.index(hand[3]) * 15 ** 2
totalScore += cardOrder.index(hand[2]) * 15 ** 3
totalScore += cardOrder.index(hand[1]) * 15 ** 4
totalScore += cardOrder.index(hand[0]) * 15 ** 5
return totalScore
hands = []
bids = []
with open(inputFilePath) as inputFile:
for line in inputFile:
lineSplit = line.split()
hand = lineSplit[0]
bid = lineSplit[1]
hands.append(hand)
bids.append(bid)
bids = [int(bid) for bid in bids]
camelCards = list(zip(hands,bids))
typeBuckets = [[],[],[],[],[],[],[]]
for camelCard in camelCards:
hand = camelCard[0]
typeScore = typeSort(hand)
typeBuckets[typeScore].append(camelCard)
finalCardSort = []
for bucket in typeBuckets:
if(len(bucket) > 1):
bucket.sort(key=bucketSort)
for camelCard in bucket:
finalCardSort.append(camelCard)
camelScores = []
for camelIndex in range(len(finalCardSort)):
scoreMultiplier = camelIndex + 1
camelCard = finalCardSort[camelIndex]
camelScores.append(camelCard[1] * scoreMultiplier)
print(sum(camelScores))
I tried to do this one as quickly as possible, so the code is more messy than I would prefer, but it works, and I don’t think the solution is too bad overall.
Edit: I went back and changed it to be a bit better. Here are my new solutions:
Part 1 v2: https://github.com/porotoman99/Advent-of-Code-2023/blob/main/Day 7/part1v2.py
import os
filePath = os.path.dirname(os.path.realpath(__file__))
inputFilePath = filePath + "\\adventofcode.com_2023_day_7_input.txt"
# inputFilePath = filePath + "\\part1.txt"
CARD_ORDER = "23456789TJQKA"
def typeSort(camelCard):
cardCount = {}
for card in CARD_ORDER:
cardCount[card] = 0
hand = camelCard[0]
for card in hand:
cardCount[card] += 1
cardTotals = list(cardCount.values())
cardTotals.sort(reverse=True)
if(cardTotals[0] == 5):
return 6
elif(cardTotals[0] == 4):
return 5
elif(cardTotals[0] == 3 and cardTotals[1] == 2):
return 4
elif(cardTotals[0] == 3):
return 3
elif(cardTotals[0] == 2 and cardTotals[1] == 2):
return 2
elif(cardTotals[0] == 2):
return 1
else:
return 0
def handSort(camelCard):
totalScore = 0
hand = camelCard[0]
totalScore += CARD_ORDER.index(hand[4]) * 15 ** 1
totalScore += CARD_ORDER.index(hand[3]) * 15 ** 2
totalScore += CARD_ORDER.index(hand[2]) * 15 ** 3
totalScore += CARD_ORDER.index(hand[1]) * 15 ** 4
totalScore += CARD_ORDER.index(hand[0]) * 15 ** 5
return totalScore
hands = []
bids = []
with open(inputFilePath) as inputFile:
for line in inputFile:
lineSplit = line.split()
hand = lineSplit[0]
bid = lineSplit[1]
hands.append(hand)
bids.append(int(bid))
camelCards = list(zip(hands,bids))
camelCards = sorted(camelCards, key=lambda x: (typeSort(x), handSort(x)))
camelScores = []
for camelIndex in range(len(camelCards)):
scoreMultiplier = camelIndex + 1
camelCard = camelCards[camelIndex]
camelScores.append(camelCard[1] * scoreMultiplier)
print(sum(camelScores))
Part 2 v2: https://github.com/porotoman99/Advent-of-Code-2023/blob/main/Day 7/part2v2.py
import os
filePath = os.path.dirname(os.path.realpath(__file__))
inputFilePath = filePath + "\\adventofcode.com_2023_day_7_input.txt"
# inputFilePath = filePath + "\\part1.txt"
CARD_ORDER = "J23456789TQKA"
def typeSort(camelCard):
cardCount = {}
for card in CARD_ORDER:
cardCount[card] = 0
hand = camelCard[0]
for card in hand:
cardCount[card] += 1
jokerCount = cardCount["J"]
cardCount["J"] = 0
cardTotals = list(cardCount.values())
cardTotals.sort(reverse=True)
if(cardTotals[0] + jokerCount == 5):
return 6
elif(cardTotals[0] + jokerCount == 4):
return 5
elif(
cardTotals[0] + jokerCount == 3 and cardTotals[1] == 2
or cardTotals[0] == 3 and cardTotals[1] + jokerCount == 2
):
return 4
elif(cardTotals[0] + jokerCount == 3):
return 3
elif(
cardTotals[0] + jokerCount == 2 and cardTotals[1] == 2
or cardTotals[0] == 2 and cardTotals[1] + jokerCount == 2
):
return 2
elif(cardTotals[0] + jokerCount == 2):
return 1
else:
return 0
def handSort(camelCard):
totalScore = 0
hand = camelCard[0]
totalScore += CARD_ORDER.index(hand[4]) * 15 ** 1
totalScore += CARD_ORDER.index(hand[3]) * 15 ** 2
totalScore += CARD_ORDER.index(hand[2]) * 15 ** 3
totalScore += CARD_ORDER.index(hand[1]) * 15 ** 4
totalScore += CARD_ORDER.index(hand[0]) * 15 ** 5
return totalScore
hands = []
bids = []
with open(inputFilePath) as inputFile:
for line in inputFile:
lineSplit = line.split()
hand = lineSplit[0]
bid = lineSplit[1]
hands.append(hand)
bids.append(int(bid))
camelCards = list(zip(hands,bids))
camelCards = sorted(camelCards, key=lambda x: (typeSort(x), handSort(x)))
camelScores = []
for camelIndex in range(len(camelCards)):
scoreMultiplier = camelIndex + 1
camelCard = camelCards[camelIndex]
camelScores.append(camelCard[1] * scoreMultiplier)
print(sum(camelScores))
Part 1: https://github.com/porotoman99/Advent-of-Code-2023/blob/main/Day 4/part1.py
Part 2: https://github.com/porotoman99/Advent-of-Code-2023/blob/main/Day 4/part2.py
I found out about this event for the first time yesterday and was able to get caught up in time for day 4.
I don’t have a specific checklist, but I can tell you what I like to do to try and stay on task.
What I usually like to do is make a world in editor mode and design small parts of that factory that I know I will need, like I know I will need enough smelters to fill a belt of iron, or I know I will need to produce each type of science. I copy those designs to blueprints, and place them back in the main world where I need them to be. At this point, it’s just a matter of placing buildings down where the ghosts say they should go, routing materials between factory sections, and scaling the factory up to deal with resource shortages.
I find that designing the factories in editor mode makes the process go much smoother, since there is not much getting in the way. No placement/breaking range limit, no resource limit, instantly able to copy and paste buildings, and the ability to use infinity chests to test throughput all make the designing process much easier for me.
Plungeroo has a fun pinball aesthetic and enjoyable puzzle design.
Galactic Glitch: Infinity’s Edge was better than I was expecting it to be, the rock throwing mechanic is especially fun.
It’s a movie.
I’ve made a bunch of these using different berries since this was posted. The classic blueberry variety is good, and cherries are just as good, if not better. Cranberries are pretty good, but are very tart, so you can’t eat as much in one serving. Blackberries tasted good, but were very seedy, so it wasn’t as good texture-wise. Figs were terrible and I had to throw the whole batch away after 1 bite. Overall, a fun and easy recipe to try, and I’m planning on making more in the future.
There are some tricks you can do to make this one a bit easier. I played on a set seed, first planning a base for it in editor mode, and then copying the entire base as a blueprint. You have to play with biters, but you can set their spawning area to be far enough away that you won’t need to interact with them. I also made a new save file for each major milestone in the base, so if I didn’t reach the end quick enough, I could try to go back to a previous segment that I thought was slow and do it faster.
It really starts off slow, but it feels pretty normal once you have enough technology later in the game. I would always make sure to carry some assemblers and solar panels with me to temporarily place down anytime I would have wanted to hand craft something.
“Worthy” from Distance.
It is still my rarest achievement, with only 0.60% of players having earned it. A lot of the achievements in my rarest achievement showcase were added to popular games years after the peak of the game’s popularity, but were actually quite easy to get. “Worthy” required beating a large level with various unique challenges, and even with checkpoints present in the game, it would often take me hours to reach the next checkpoint at certain parts. I had to follow along with this video at some parts to make sure I was getting through the level correctly, especially the segment from 5:40 to 7:57 which took me about 4 hours to get through successfully.
Amazon Prime is giving it away for free right now though, which is probably where OP got the key from.
Stuff I liked:
Stuff I didn’t like (or at least not enough to buy):
As far as I understand it, the node is more useful for car routing, since it marks the exact point on the road where the intersection crosses, while the way is more useful for pedestrian routing, where the actual path to be traveled is more relevant. I agree that it seems redundant, but for all I know, car routers might totally ignore any pedestrian footways, which would prevent them from filling in the crossing data on the fly.