46 lines
943 B
Bash
Executable File
46 lines
943 B
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -eo pipefail
|
|
|
|
patient_pref() {
|
|
printf '%d %d' "-100" "$1"
|
|
}
|
|
|
|
therapist_pref() {
|
|
printf '%d %d' "-200" "$1"
|
|
}
|
|
|
|
secret_share() {
|
|
local secret="$1"
|
|
export share_0="$(( RANDOM % (secret / 2 + 1) ))"
|
|
export share_1="$(( RANDOM % (secret / 2 + 1) ))"
|
|
export share_2="$(( secret - (share_0 + share_1) ))"
|
|
}
|
|
|
|
max_case=5
|
|
iter="$1"
|
|
|
|
for _ in $(seq "$iter"); do
|
|
rand="$(( (RANDOM % max_case) + 1 ))"
|
|
secret_share "$rand"
|
|
p_data_s+=( "$rand" )
|
|
|
|
for j in $(seq 0 2); do
|
|
eval 'p_data_'$j'+=( $(patient_pref "$share_'$j'") )'
|
|
done
|
|
done
|
|
|
|
t_data_s=( $(shuf -e "${p_data_s[@]}") )
|
|
|
|
for i in $(seq 0 "$(( iter - 1 ))"); do
|
|
secret_share "${t_data_s[$i]}"
|
|
|
|
for j in $(seq 0 2); do
|
|
eval 't_data_'$j'+=( $(therapist_pref "$share_'$j'") )'
|
|
done
|
|
done
|
|
|
|
for i in $(seq 0 2); do
|
|
eval 'echo "${p_data_'$i'[*]} ${t_data_'$i'[*]}" > MP-SPDZ/Player-Data/Input-P'$i'-0'
|
|
done
|