• PTA(BasicLevel)-1014 福尔摩斯的约会


    一、问题描述

           大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间星期四 14:04,因为前面两字符串中第 1 对相同的大写英文字母(大小写有区分)是第 4 个字母 D,代表星期四;第 2 对相同的字符是 E ,那是第 5 个英文字母,代表一天里的第 14 个钟头(于是一天的 0 点到 23 点由数字 0 到 9、以及大写字母 A 到 N 表示);后面两字符串第 1 对相同的英文字母 s 出现在第 4 个位置(从 0 开始计数)上,代表第 4 分钟。现给定两对字符串,请帮助福尔摩斯解码得到约会的时间。

    输入格式:

           输入在 4 行中分别给出 4 个非空、不包含空格、且长度不超过 60 的字符串。

    输出格式:

           在一行中输出约会的时间,格式为 DAY HH:MM,其中 DAY 是某星期的 3 字符缩写,即 MON 表示星期一,TUE 表示星期二,WED 表示星期三,THU 表示星期四,FRI 表示星期五,SAT 表示星期六, SUN 表示星期日。题目输入保证每个测试存在唯一解。

    二、解题思路

    """ PAT-B 1014 福尔摩斯的约会
    Input:
        3485djDkxh4hhGE
        2984akDfkkkkggEdsb
        s&hgsfdk
        d&Hyscvnm
    Output:
        THU 14:04
    """
    seqs_a = input()
    seqs_b = input()
    seqs_day1 = input()
    seqs_day2 = input()
    
    # From days[0] to daya[6] is equals to each day in a week
    days = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
    day_in_week = {chr(ord("A")+i): days[i] for i in range(len(days))}
    
    hours = [str(i) for i in range(10)]  # From 0-9 and A-N to represent 0-23 hour
    hours.extend([chr(ord("A")+i) for i in range(14)])
    hours = {hours[i]: str(i) for i in range(len(hours))}
    for i in [str(i) for i in range(10)]:
        hours[i] = "0" + hours[i]
    
    # Search for the first upper equaled alpha and second equaled char
    cnt = 0  # the first identical char pair
    first_chr = ""
    second_chr = ""
    for a, b in zip(seqs_a, seqs_b):
        # first char is a upper alpha
        if a == b:
            if cnt == 0 and a in day_in_week.keys():
                # round 1
                first_chr = a    # a must in A:G
                cnt = 1
            elif cnt == 1 and a in hours.keys():
                second_chr = a   # a must in char seq 0:N
                break
    
    index = 0
    for x, y in zip(seqs_day1, seqs_day2):
        if x == y and x.isalpha():
            break
        index += 1
    minutes = ("0" + str(index)) if index < 10 else str(index)
    
    print(day_in_week[first_chr], "{0}:{1}".format(hours[second_chr], minutes))
  • 相关阅读:
    使用iptables禁止外网访问tomcat的8080端口
    解决ie浏览器下载apk或ipa变为zip
    'ᄈ'
    centos上安装grafana
    vertica单节点故障恢复 Startup Failed, ASR Required
    vertica审计日志
    centos安装nginx1.17.9
    centos上nginx转发tcp请求
    centos 安装mysql8.0.16
    centos下导出docx为html
  • 原文地址:https://www.cnblogs.com/justLittleStar/p/11687174.html
Copyright © 2020-2023  润新知