108 lines
2.7 KiB
Bash
Executable File
108 lines
2.7 KiB
Bash
Executable File
#!/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
|