私は診療所のキューシステムで作業しています。フロントデスクにいる人には、キューに患者を追加する2つのオプションがあります。固定の予定とタイムアレイで最も近い空きスロットを見つける
- 患者
- ウォークイン患者
だから例えば4人の患者がキュー内に既に存在している、私の既存の予定配列は
existing_appointments = ["09:30", "10:00", "12:15", "13:45"];
と平均のように見えます患者の診察時間は15分です。
avg_wait_per_patient = 15;
患者が歩いてすぐに、私は彼のために最も利用可能なタイムスロットを探しています。
は時間が今、このスロットには何の約束がないので、それは9時の代わりに9時15分を返すため、以下の機能find_free_slot()
が動作しない9時
current_time = "09:00";
であると言います。
私が目指しているのは、current_time + avg_wait_per_patient
の近くに誰もいない場合は、current_time
スロットを与えられるべきです。このスロットが利用できない場合、空きスロットが見つからない限り、配列をループします。失敗した場合は、last_index_of_array + avg_wait
の時間に追加する必要があります。
function toMinutes(t) {
return 60 * Number(t.split(":")[0]) + Number(t.split(":")[1]);
}
function reverse_toMinutes(t) {
return ("0" + Math.floor(t/60)).slice(-2) + ":" + ("0" + t % 60).slice(-2);
}
function find_free_slot(ct,appointments,avg_wait) {
ct = toMinutes(ct);
free_slot = '';
if(appointments.length==0) {
free_slot = ct;
} else {
for(i=0; i<appointments.length; i++) {
appointment = toMinutes(appointments[i]);
if(free_slot <= appointment - avg_wait) {
i == 0 ?
free_slot = ct + avg_wait :
free_slot = toMinutes(appointments[i - 1]) + avg_wait;
break;
}
}
}
return reverse_toMinutes(free_slot);
}
私はCURRENT_TIMEとexisting_appointmentsに異なる値を入力しようとしています。たとえば、現在の時刻を9:50の 'current_time =" 09:50 ";'に変更した場合、出力は10:05になりました。さらに、existing_appointmentsの最初の値を9:10に変更しました。結果の出力は9:15でした。 – Inkdot