input<-read_lines("Day4Sample.txt")
Part 1
### Setup
### replace "." with 0 & "@" with 1
room<-matrix(0,nrow=length(input)+2,ncol=nchar(input[1])+2)
for(i in 1:length(input)){
r<-str_replace_all(str_replace_all(input[i],"@","1"),"\\.","0")
room[(i+1),]<-c(0,as.numeric(unlist(str_split(r,""))),0)}
forkliftable<-function(room){
can_access<-0
for(i in 2:(ncol(room)-1)){
for(j in 2:(nrow(room)-1)){
if(room[i,j]==1&&(sum(room[(i-1):(i+1),(j-1):(j+1)]))<=4){
can_access<-can_access+1}}}
can_access}
forkliftable(room)
[1] 13
Part 2
paperless<-function(room){
startingamount<-sum(room)
doneyet<-FALSE
counter<-0
while(!doneyet){
doneyet<-TRUE
nextroom<-room
for(i in 2:(ncol(room)-1)){
for(j in 2:(nrow(room)-1)){
if(room[i,j]==1&&(sum(room[(i-1):(i+1),(j-1):(j+1)]))<=4){
nextroom[i,j]<-0
doneyet<-FALSE}}}
room<-nextroom}
startingamount-sum(room)}
paperless(room)
[1] 43

LS0tDQp0aXRsZTogIkRheSA0IE5vdGVib29rIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQpsaWJyYXJ5KGdnYW5pbWF0ZSkNCmxpYnJhcnkoZ2dyYXBoKQ0KbGlicmFyeShrbml0cikNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHN0cmluZ3IpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkocmVhZHIpDQpvcHRpb25zKHNjaXBlbiA9IDk5OSkNCmBgYA0KDQpgYGB7cn0NCmlucHV0PC1yZWFkX2xpbmVzKCJEYXk0U2FtcGxlLnR4dCIpDQpgYGANCg0KDQojIyBQYXJ0IDENCg0KYGBge3J9DQojIyMgU2V0dXANCiMjIyByZXBsYWNlICIuIiB3aXRoIDAgJiAiQCIgd2l0aCAxDQoNCnJvb208LW1hdHJpeCgwLG5yb3c9bGVuZ3RoKGlucHV0KSsyLG5jb2w9bmNoYXIoaW5wdXRbMV0pKzIpDQpmb3IoaSBpbiAxOmxlbmd0aChpbnB1dCkpew0KICByPC1zdHJfcmVwbGFjZV9hbGwoc3RyX3JlcGxhY2VfYWxsKGlucHV0W2ldLCJAIiwiMSIpLCJcXC4iLCIwIikNCiAgcm9vbVsoaSsxKSxdPC1jKDAsYXMubnVtZXJpYyh1bmxpc3Qoc3RyX3NwbGl0KHIsIiIpKSksMCl9DQoNCmBgYA0KDQpgYGB7cn0NCmZvcmtsaWZ0YWJsZTwtZnVuY3Rpb24ocm9vbSl7DQogIGNhbl9hY2Nlc3M8LTANCiAgZm9yKGkgaW4gMjoobmNvbChyb29tKS0xKSl7DQogICAgZm9yKGogaW4gMjoobnJvdyhyb29tKS0xKSl7DQogICAgICBpZihyb29tW2ksal09PTEmJihzdW0ocm9vbVsoaS0xKTooaSsxKSwoai0xKTooaisxKV0pKTw9NCl7DQogICAgICAgIGNhbl9hY2Nlc3M8LWNhbl9hY2Nlc3MrMX19fQ0KICBjYW5fYWNjZXNzfQ0KYGBgDQoNCmBgYHtyfQ0KZm9ya2xpZnRhYmxlKHJvb20pDQpgYGANCiMjIFBhcnQgMg0KDQpgYGB7cn0NCnBhcGVybGVzczwtZnVuY3Rpb24ocm9vbSl7DQogIHN0YXJ0aW5nYW1vdW50PC1zdW0ocm9vbSkNCiAgZG9uZXlldDwtRkFMU0UNCiAgY291bnRlcjwtMA0KICB3aGlsZSghZG9uZXlldCl7DQogICAgZG9uZXlldDwtVFJVRQ0KICAgIG5leHRyb29tPC1yb29tDQogICAgZm9yKGkgaW4gMjoobmNvbChyb29tKS0xKSl7DQogICAgICBmb3IoaiBpbiAyOihucm93KHJvb20pLTEpKXsNCiAgICAgICAgaWYocm9vbVtpLGpdPT0xJiYoc3VtKHJvb21bKGktMSk6KGkrMSksKGotMSk6KGorMSldKSk8PTQpew0KICAgICAgICAgIG5leHRyb29tW2ksal08LTANCiAgICAgICAgICBkb25leWV0PC1GQUxTRX19fQ0KICAgIHJvb208LW5leHRyb29tfQ0KICBzdGFydGluZ2Ftb3VudC1zdW0ocm9vbSl9DQpgYGANCg0KDQpgYGB7cn0NCnBhcGVybGVzcyhyb29tKQ0KYGBgDQoNCiFbXShmb3JrbGlmdGVkLmdpZik=