Day 20
This commit is contained in:
107
20/01.sh
Executable file
107
20/01.sh
Executable file
@@ -0,0 +1,107 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
read line
|
||||||
|
enhancement=( $(sed -e 's/\./ 0 /g' -e 's/\#/ 1 /g' <<< $line) )
|
||||||
|
|
||||||
|
read line
|
||||||
|
|
||||||
|
declare -A image
|
||||||
|
invisible_pixels_color=0
|
||||||
|
i=0
|
||||||
|
i_max=0
|
||||||
|
i_min=0
|
||||||
|
j_min=0
|
||||||
|
while read line; do
|
||||||
|
j_max=${#line}
|
||||||
|
for ((j=0;j<j_max;j++)); do
|
||||||
|
if [[ ${line:$j:1} == '.' ]]; then
|
||||||
|
image[$i,$j]=0
|
||||||
|
else
|
||||||
|
image[$i,$j]=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
i=$((i+1))
|
||||||
|
done
|
||||||
|
i_max=$i
|
||||||
|
|
||||||
|
for ((nb_iter=0;nb_iter<2;nb_iter++)); do
|
||||||
|
declare -A new_image
|
||||||
|
i_min=$((i_min-1))
|
||||||
|
j_min=$((j_min-1))
|
||||||
|
i_max=$((i_max+1))
|
||||||
|
j_max=$((j_max+1))
|
||||||
|
for ((i=i_min;i<i_max;i++)); do
|
||||||
|
for ((j=j_min;j<j_max;j++)); do
|
||||||
|
if [ -z ${image[$i,$j]} ]; then
|
||||||
|
image[$i,$j]=$invisible_pixels_color
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
for ((i=i_min;i<i_max;i++)); do
|
||||||
|
for ((j=j_min;j<j_max;j++)); do
|
||||||
|
new_color=''
|
||||||
|
if [ $i -gt $i_min ]; then
|
||||||
|
if [ $j -gt $j_min ]; then
|
||||||
|
new_color=$new_color${image[$((i-1)),$((j-1))]}
|
||||||
|
else
|
||||||
|
new_color=$new_color$invisible_pixels_color
|
||||||
|
fi
|
||||||
|
new_color=$new_color${image[$((i-1)),$j]}
|
||||||
|
if [ $j -lt $((j_max-1)) ]; then
|
||||||
|
new_color=$new_color${image[$((i-1)),$((j+1))]}
|
||||||
|
else
|
||||||
|
new_color=$new_color$invisible_pixels_color
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
new_color=$new_color$invisible_pixels_color$invisible_pixels_color$invisible_pixels_color
|
||||||
|
fi
|
||||||
|
if [ $j -gt $j_min ]; then
|
||||||
|
new_color=$new_color${image[$i,$((j-1))]}
|
||||||
|
else
|
||||||
|
new_color=$new_color$invisible_pixels_color
|
||||||
|
fi
|
||||||
|
new_color=$new_color${image[$i,$j]}
|
||||||
|
if [ $j -lt $((j_max-1)) ]; then
|
||||||
|
new_color=$new_color${image[$i,$((j+1))]}
|
||||||
|
else
|
||||||
|
new_color=$new_color$invisible_pixels_color
|
||||||
|
fi
|
||||||
|
if [ $i -lt $((i_max-1)) ]; then
|
||||||
|
if [ $j -gt $j_min ]; then
|
||||||
|
new_color=$new_color${image[$((i+1)),$((j-1))]}
|
||||||
|
else
|
||||||
|
new_color=$new_color$invisible_pixels_color
|
||||||
|
fi
|
||||||
|
new_color=$new_color${image[$((i+1)),$j]}
|
||||||
|
if [ $j -lt $((j_max-1)) ]; then
|
||||||
|
new_color=$new_color${image[$((i+1)),$((j+1))]}
|
||||||
|
else
|
||||||
|
new_color=$new_color$invisible_pixels_color
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
new_color=$new_color$invisible_pixels_color$invisible_pixels_color$invisible_pixels_color
|
||||||
|
fi
|
||||||
|
new_image[$i,$j]=${enhancement[$((2#${new_color}))]}
|
||||||
|
done
|
||||||
|
done
|
||||||
|
for ((i=i_min;i<i_max;i++)); do
|
||||||
|
for ((j=j_min;j<j_max;j++)); do
|
||||||
|
image[$i,$j]=${new_image[$i,$j]}
|
||||||
|
done
|
||||||
|
done
|
||||||
|
if [ $invisible_pixels_color -eq 0 ]; then
|
||||||
|
invisible_pixels_color=${enhancement[0]}
|
||||||
|
else
|
||||||
|
invisible_pixels_color=${enhancement[511]}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
n_pixels_lit=0
|
||||||
|
for ((i=i_min;i<i_max;i++)); do
|
||||||
|
for ((j=j_min;j<j_max;j++)); do
|
||||||
|
if [ ${image[$i,$j]} -eq 1 ]; then
|
||||||
|
n_pixels_lit=$((n_pixels_lit+1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
echo $n_pixels_lit
|
||||||
107
20/02.sh
Executable file
107
20/02.sh
Executable file
@@ -0,0 +1,107 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
read line
|
||||||
|
enhancement=( $(sed -e 's/\./ 0 /g' -e 's/\#/ 1 /g' <<< $line) )
|
||||||
|
|
||||||
|
read line
|
||||||
|
|
||||||
|
declare -A image
|
||||||
|
invisible_pixels_color=0
|
||||||
|
i=0
|
||||||
|
i_max=0
|
||||||
|
i_min=0
|
||||||
|
j_min=0
|
||||||
|
while read line; do
|
||||||
|
j_max=${#line}
|
||||||
|
for ((j=0;j<j_max;j++)); do
|
||||||
|
if [[ ${line:$j:1} == '.' ]]; then
|
||||||
|
image[$i,$j]=0
|
||||||
|
else
|
||||||
|
image[$i,$j]=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
i=$((i+1))
|
||||||
|
done
|
||||||
|
i_max=$i
|
||||||
|
|
||||||
|
for ((nb_iter=0;nb_iter<50;nb_iter++)); do
|
||||||
|
declare -A new_image
|
||||||
|
i_min=$((i_min-1))
|
||||||
|
j_min=$((j_min-1))
|
||||||
|
i_max=$((i_max+1))
|
||||||
|
j_max=$((j_max+1))
|
||||||
|
for ((i=i_min;i<i_max;i++)); do
|
||||||
|
for ((j=j_min;j<j_max;j++)); do
|
||||||
|
if [ -z ${image[$i,$j]} ]; then
|
||||||
|
image[$i,$j]=$invisible_pixels_color
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
for ((i=i_min;i<i_max;i++)); do
|
||||||
|
for ((j=j_min;j<j_max;j++)); do
|
||||||
|
new_color=''
|
||||||
|
if [ $i -gt $i_min ]; then
|
||||||
|
if [ $j -gt $j_min ]; then
|
||||||
|
new_color=$new_color${image[$((i-1)),$((j-1))]}
|
||||||
|
else
|
||||||
|
new_color=$new_color$invisible_pixels_color
|
||||||
|
fi
|
||||||
|
new_color=$new_color${image[$((i-1)),$j]}
|
||||||
|
if [ $j -lt $((j_max-1)) ]; then
|
||||||
|
new_color=$new_color${image[$((i-1)),$((j+1))]}
|
||||||
|
else
|
||||||
|
new_color=$new_color$invisible_pixels_color
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
new_color=$new_color$invisible_pixels_color$invisible_pixels_color$invisible_pixels_color
|
||||||
|
fi
|
||||||
|
if [ $j -gt $j_min ]; then
|
||||||
|
new_color=$new_color${image[$i,$((j-1))]}
|
||||||
|
else
|
||||||
|
new_color=$new_color$invisible_pixels_color
|
||||||
|
fi
|
||||||
|
new_color=$new_color${image[$i,$j]}
|
||||||
|
if [ $j -lt $((j_max-1)) ]; then
|
||||||
|
new_color=$new_color${image[$i,$((j+1))]}
|
||||||
|
else
|
||||||
|
new_color=$new_color$invisible_pixels_color
|
||||||
|
fi
|
||||||
|
if [ $i -lt $((i_max-1)) ]; then
|
||||||
|
if [ $j -gt $j_min ]; then
|
||||||
|
new_color=$new_color${image[$((i+1)),$((j-1))]}
|
||||||
|
else
|
||||||
|
new_color=$new_color$invisible_pixels_color
|
||||||
|
fi
|
||||||
|
new_color=$new_color${image[$((i+1)),$j]}
|
||||||
|
if [ $j -lt $((j_max-1)) ]; then
|
||||||
|
new_color=$new_color${image[$((i+1)),$((j+1))]}
|
||||||
|
else
|
||||||
|
new_color=$new_color$invisible_pixels_color
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
new_color=$new_color$invisible_pixels_color$invisible_pixels_color$invisible_pixels_color
|
||||||
|
fi
|
||||||
|
new_image[$i,$j]=${enhancement[$((2#${new_color}))]}
|
||||||
|
done
|
||||||
|
done
|
||||||
|
for ((i=i_min;i<i_max;i++)); do
|
||||||
|
for ((j=j_min;j<j_max;j++)); do
|
||||||
|
image[$i,$j]=${new_image[$i,$j]}
|
||||||
|
done
|
||||||
|
done
|
||||||
|
if [ $invisible_pixels_color -eq 0 ]; then
|
||||||
|
invisible_pixels_color=${enhancement[0]}
|
||||||
|
else
|
||||||
|
invisible_pixels_color=${enhancement[511]}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
n_pixels_lit=0
|
||||||
|
for ((i=i_min;i<i_max;i++)); do
|
||||||
|
for ((j=j_min;j<j_max;j++)); do
|
||||||
|
if [ ${image[$i,$j]} -eq 1 ]; then
|
||||||
|
n_pixels_lit=$((n_pixels_lit+1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
echo $n_pixels_lit
|
||||||
Reference in New Issue
Block a user