Public
Edited
Dec 12, 2022
Insert cell
Insert cell
monkeys_items = input.split("\n").filter(r=> r.substring(2,7)=="Start").map(r=> r.substring(18).split(", ").map(v=>+v))
Insert cell
monkeys_ops = input.split("\n").filter(r=> r.substring(2,7)=="Opera").map(
r=> ({ op:r.split("=")[1].split(" ")[2], num:r.split("=")[1].split(" ")[3]}))
Insert cell
monkeys_test = input.split("\n").filter(r=> r.substring(2,6)=="Test").map(r=>+r.split(" ")[5])
Insert cell
monkeys_true = input.split("\n").filter(r=> r.substring(4,8)=="If t").map(r=>+r.split(" ")[9])
Insert cell
monkeys_false = input.split("\n").filter(r=> r.substring(4,8)=="If f").map(r=>+r.split(" ")[9])
Insert cell
monkeys_act={
let nb_monk = monkeys_items.length
let monkeys_act = new Array(nb_monk).fill(0)
let monkeys_items_state = monkeys_items.map(m=>[...m])
console.log(monkeys_items_state)
for (let r=1;r<=20;r++){
for(let m=0;m<nb_monk;m++){
let nb_items= monkeys_items_state[m].length
for(let i=0;i<nb_items;i++){
monkeys_act[m]+=1
let citem = monkeys_items_state[m].shift()
let op = `let old=${citem};old${monkeys_ops[m].op}${monkeys_ops[m].num}`
let worry_level = Math.floor(eval(op)/3)
let to_monkey = monkeys_true[m]
if(worry_level%monkeys_test[m]!=0){
to_monkey = monkeys_false[m]
}
monkeys_items_state[to_monkey].push(worry_level)
}
}
}
return monkeys_act
}
Insert cell
monkeys_act.sort((a,b)=>b-a)[0]*monkeys_act.sort((a,b)=>b-a)[1]
Insert cell
Insert cell
monkeys_items_mod=monkeys_items.map(r => r.map(v => monkeys_test.map(t=>v%t)))
Insert cell
monkeys_act2={
let nb_monk = monkeys_items.length
let monkeys_act = new Array(nb_monk).fill(0)
let monkeys_items_state = monkeys_items_mod.map(m=>[...m.map(dec=>[... dec])])
for (let r=1;r<=10000;r++){
for(let m=0;m<nb_monk;m++){
let nb_items= monkeys_items_state[m].length
for(let i=0;i<nb_items;i++){
monkeys_act[m]+=1
let citem = monkeys_items_state[m].shift()
citem = citem.map(
(res,mm) =>
eval(`let old=${res};(old${monkeys_ops[m].op}${monkeys_ops[m].num})%${monkeys_test[mm]}`)
)
console.log(citem)
let to_monkey = monkeys_true[m]
if(citem[m]!=0){
to_monkey = monkeys_false[m]
}
monkeys_items_state[to_monkey].push(citem)
}
}
}
return monkeys_act
}
Insert cell
monkeys_act2.sort((a,b)=>b-a)[0]*monkeys_act2.sort((a,b)=>b-a)[1]
Insert cell
input_day11 = FileAttachment("input_day11.txt").text()
Insert cell
input=input_day11
Insert cell
input_day11_test = FileAttachment("input_day11_test.txt").text()
Insert cell
[1,2,3].pop()
Insert cell

One platform to build and deploy the best data apps

Experiment and prototype by building visualizations in live JavaScript notebooks. Collaborate with your team and decide which concepts to build out.
Use Observable Framework to build data apps locally. Use data loaders to build in any language or library, including Python, SQL, and R.
Seamlessly deploy to Observable. Test before you ship, use automatic deploy-on-commit, and ensure your projects are always up-to-date.
Learn more