呼叫转移

呼叫转移是指您的电话无法接听或您不愿接电话,可以将来电转移到其它电话号码上。它是电信业一项传统通信业务,又称呼叫前转、呼入转移。

  • 用户被呼叫时的状态有4种:idlebusyno-responseunreachable
  • 用户可登记的5种呼叫转移,格式为type number,type代表转移种类, number代表转移号码:
    type为 0:无条件转移,优先级最高,用户处于任何状态都触发此转移
    type为 1:用户状态busy时触发此转移
    type为 2:用户状态no-response时触发此转移
    type为 3:用户状态unreachable时触发此转移
    type为 4:默认转移,优先级最低,用户不是idle状态时,且无法触发上述四种转移,触发此转移

注:同一个状态可登记多次,以最后一次登记为准。

现给出某一用户当前的用户状态,以及其登记的若干个呼叫转移号码,请输出最终的呼叫结果:

  • 若发生转移,则输出转移号码
  • 若用户状态为idle,且未发生转移时,则呼叫本机成功,输出success
  • 若呼叫失败:既没有发生转移,也没有呼叫本机成功,则输出failure。例如,用户状态为 busy,但用户既未登记 type 为 0 或 1 或 4 的呼叫转移,则呼叫失败。
解答要求

时间限制: C/C++ 1000ms, 其他语言:2000ms

内存限制: C/C++ 256MB, 其他语言:512MB

输入

第一行是数字 num 和 字符串 status:num代表呼叫转移登记的次数( 0 < N <= 20),status表示用户被呼叫时的状态。
接下来 num 行是用户的呼叫转移登记操作,转移号码长度 6-15位,用例保证输入合法。

输出

一个字符串,代表最终的呼叫结果

样例1
复制输入:
3 busy 2 18912345678 4 18912345678 4 13312345567
复制输出:
13312345567
解释:

用户busy,且没有登记 busy 转移,但登记默认转移,呼叫转移到默认转移号码。
默认转移号码已最后一次登记为准

样例2
复制输入:
1 no-response 3 075587678100
复制输出:
failure
解释:

用户no-response,没有登记no-response转移,也没有登记默认转移,呼叫失败。

样例3
复制输入:
1 idle 3 075587678100
复制输出:
success
解释:

用户idle,且没有登记无条件转移,呼叫成功

提示

答题要求:结果可信和过程可信同样重要,您编写的代码需要符合可信的要求(包括通用编码规范、安全编码规范和圈复杂度)。

复制代码
 1 import collections
 2 from typing import List
 3 
 4 
 5 def calling(status: str, reg_call_forward_nums: List[List[str]]) -> str:
 6     dic = {'busy': 1, 'no-response': 2, 'unreachable': 3}
 7     phone = collections.defaultdict(list)
 8     for i in range(len(reg_call_forward_nums)):
 9         phone[reg_call_forward_nums[i][0]].append(reg_call_forward_nums[i][1])
10     curnum = dic.get(status)
11     keys = phone.keys()
12     if 0 in keys:
13         return phone.get(0)[-1]
14     if status == 'idle':
15         return 'success'
16     elif curnum in keys:
17         return phone[curnum][-1]
18     elif 4 in keys:
19         return phone[4][-1]
20     else:
21         return 'failure'
22 
23 if __name__ == "__main__":
24     nums_count, status = input().strip().split()
25     reg_call_forward_nums_all = [input().strip().split() for _ in range(int(nums_count))]
26     reg_call_forward_nums = [[int(value[0]), value[1]] for value in reg_call_forward_nums_all]
27     print(calling(status, reg_call_forward_nums))
复制代码

 

posted @   song10  阅读(458)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示