Day 3
This commit is contained in:
29
03/01.sh
Executable file
29
03/01.sh
Executable file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
length=0
|
||||||
|
n_array=()
|
||||||
|
lines_number=0
|
||||||
|
while read line; do
|
||||||
|
if [ $length -eq 0 ]; then
|
||||||
|
length=${#line}
|
||||||
|
n_array=($(for j in $(seq $length); do echo 0; done))
|
||||||
|
fi
|
||||||
|
for i in $(seq $length); do
|
||||||
|
curr_bit=${line:$((i-1)):1}
|
||||||
|
n_array[$((i-1))]=$((n_array[i-1]+curr_bit))
|
||||||
|
done
|
||||||
|
lines_number=$((lines_number+1))
|
||||||
|
done
|
||||||
|
|
||||||
|
gamma_rate=''
|
||||||
|
epsilon_rate=''
|
||||||
|
for i in $(seq $length); do
|
||||||
|
if [ ${n_array[$((i-1))]} -ge $((lines_number/2)) ]; then
|
||||||
|
gamma_rate=${gamma_rate}1
|
||||||
|
epsilon_rate=${epsilon_rate}0
|
||||||
|
else
|
||||||
|
gamma_rate=${gamma_rate}0
|
||||||
|
epsilon_rate=${epsilon_rate}1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "ibase=2;obase=A;$gamma_rate*$epsilon_rate"|bc
|
||||||
65
03/02.sh
Executable file
65
03/02.sh
Executable file
@@ -0,0 +1,65 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
length=0
|
||||||
|
n=0
|
||||||
|
lines=()
|
||||||
|
while read line; do
|
||||||
|
if [ $length -eq 0 ]; then
|
||||||
|
length=${#line}
|
||||||
|
fi
|
||||||
|
curr_bit=${line:0:1}
|
||||||
|
n=$((n+curr_bit))
|
||||||
|
lines+=($line)
|
||||||
|
done
|
||||||
|
|
||||||
|
oxygen_lines=(${lines[@]})
|
||||||
|
oxygen_tmp=''
|
||||||
|
oxygen_n=$n
|
||||||
|
co2_lines=(${lines[@]})
|
||||||
|
co2_tmp=''
|
||||||
|
co2_n=$n
|
||||||
|
for i in $(seq $length); do
|
||||||
|
lines_number=${#oxygen_lines[@]}
|
||||||
|
if [ $oxygen_n -ge $((lines_number/2)) ]; then
|
||||||
|
oxygen_tmp=1
|
||||||
|
else
|
||||||
|
oxygen_tmp=0
|
||||||
|
fi
|
||||||
|
lines_number=${#co2_lines[@]}
|
||||||
|
if [ $co2_n -lt $((lines_number/2)) ]; then
|
||||||
|
co2_tmp=1
|
||||||
|
else
|
||||||
|
co2_tmp=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
new_oxygen_lines=()
|
||||||
|
oxygen_n=0
|
||||||
|
for line in ${oxygen_lines[@]}; do
|
||||||
|
if [ ${#oxygen_lines[@]} -eq 1 ]; then
|
||||||
|
new_oxygen_lines=(${oxygen_lines[@]})
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [ ${line:$((i-1)):1} -eq $oxygen_tmp ]; then
|
||||||
|
curr_bit=${line:$i:1}
|
||||||
|
oxygen_n=$((oxygen_n+curr_bit))
|
||||||
|
new_oxygen_lines+=($line)
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
oxygen_lines=(${new_oxygen_lines[@]})
|
||||||
|
|
||||||
|
new_co2_lines=()
|
||||||
|
co2_n=0
|
||||||
|
for line in ${co2_lines[@]}; do
|
||||||
|
if [ ${#co2_lines[@]} -eq 1 ]; then
|
||||||
|
new_co2_lines=(${co2_lines[@]})
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [ ${line:$((i-1)):1} -eq $co2_tmp ]; then
|
||||||
|
curr_bit=${line:$i:1}
|
||||||
|
co2_n=$((co2_n+curr_bit))
|
||||||
|
new_co2_lines+=($line)
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
co2_lines=(${new_co2_lines[@]})
|
||||||
|
done
|
||||||
|
echo "ibase=2;obase=A;$oxygen_lines*$co2_lines"|bc
|
||||||
Reference in New Issue
Block a user