首页 > 试题广场 >

福尔摩斯的约会 (20)

[编程题]福尔摩斯的约会 (20)
  • 热度指数:65712 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 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表示星期日。题目输入保证每个测试存在唯一解。
示例1

输入

3485djDkxh4hhGE
2984akDfkkkkggEdsb
s&hgsfdk
d&Hyscvnm

输出

THU 14:04
def f(s, list_1): for letter in s:
        list_1.append(letter)

s1 = input()
s2 = input()
s3 = input()
s4 = input()
list1 = []
list2 = []
list3 = []
list4 = []
same_element = []
index = 0 index_1 = 0 hour = '' f(s1, list1)
f(s2, list2)
f(s3, list3)
f(s4, list4) while True: if list1[index] == list2[index]:
        same_element.append(list1[index])
        index += 1  if len(same_element) == 2: break while True: if list3[index_1] == list4[index_1]: break  else:
        index += 1 weekday = "" if same_element[0].lower() == 'a':
    weekday = 'MON' elif same_element[0].lower() == 'b':
    weekday = "TUE" elif same_element[0].lower() == 'c':
    weekday = "WED" elif same_element[0].lower() == "d":
    weekday = 'THU' elif same_element[0].lower() == 'e':
    weekday = "FRI" elif same_element[0].lower() == 'f':
    weekday = 'SAT' elif same_element[0].lower() == 'g':
    weekday = "SUN" if str(same_element[1]).lower() == 'a':
    hour = '10' elif str(same_element[1]).lower() == 'b':
    hour = '11' elif str(same_element[1]).lower() == 'c':
    hour = '12' elif str(same_element[1]).lower() == 'd':
    hour = '13' elif str(same_element[1]).lower() == 'e':
    hour = '14' elif str(same_element[1]).lower() == 'f':
    hour = '15' elif str(same_element[1]).lower() == 'g':
    hour = '16' elif str(same_element[1]).lower() == 'h':
    hour = '17' elif str(same_element[1]).lower() == 'i':
    hour = '18' elif str(same_element[1]).lower() == 'j':
    hour = '19' elif str(same_element[1]).lower() == 'k':
    hour = '20' elif str(same_element[1]).lower() == 'l':
    hour = '21' elif str(same_element[1]).lower() == 'm':
    hour = '22' elif str(same_element[1]).lower() == 'n':
    hour = '23' print(f"{weekday} {hour} : {index_1}")
发表于 2023-04-09 14:19:54 回复(0)
a = input()
b = input()
c = input()
d = input()
kk = []
for i in range(0, len(a) - 1):
    if a[i] == b[i]:
        if a[i].isupper():
            kk.append(a[i])
            for j in range(i + 1, len(a)):
                if a[j] == b[j] and a[j].isdigit()&nbs***bsp;a[j].isupper() and b[j].isupper():
                    kk.append(a[j])
                    break
            break
print(kk)
alp = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
hours = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
         'M', 'N']
num = 0
for i in range(0, len(alp)):
    if alp[i] == kk[0]:
        num = i
week = ['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN']
Day = week[num]
for i in range(0, len(hours)):
    if hours[i] == kk[1]:
        num = i
        break


HH = "%02d" % num
MM = 0
for i in range(0, len(c)):
    if c[i] == d[i] and c[i].isalpha():
        MM = i
        break
MM = "%02d" % MM
print('{} {}:{}'.format(Day, HH, MM))

发表于 2020-05-23 01:52:56 回复(0)
data_index = {"A": "MON", "B": "TUE", "C": "WED", "D": "THU", "E": "FRI", "F": "SAT", "G": "SUN"}
inp = []
for i in range(4):
    inp.append(input())
count = 0
for i in range(len(inp[0])):
    if inp[0][i] == inp[1][i]:
        if count == 1 and ("0"<=inp[0][i]<="9" or "A"<=inp[0][i]<="N"):
            hour = int(inp[0][i], 36)
            break
        if inp[0][i].isupper() and "A"<=inp[0][i]<="G" and count == 0:
            week = data_index[inp[0][i]]
            count+=1

for i in range(len(inp[2])):
    if inp[2][i].isalpha() and inp[2][i] == inp[3][i]:
        minute = i
        break
print(week, str(hour).zfill(2)+':'+str(minute).zfill(2))

发表于 2019-09-10 23:13:58 回复(0)

s1 = input()
s2 = input()
s3 = input()
s4 = input()

chlst = []
for i, j in zip(s1, s2):
	if i == j:
		chlst.append(i)
count = 0
for ch in chlst:
	if ch.isupper():
		break
	else:
		count += 1
chlst = chlst[count:]
day = ['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAR', 'SUN']
print(day[ord(chlst[0]) - ord('A')], end=' ')
if chlst[1].isdigit():
	print('%02d' % int(chlst[1]), end=':')
else:
	print('%02d' % (ord(chlst[1]) - ord('A') + 10), end=':')
count = 0
for i, j in zip(s3, s4):
	if i.isalpha() and j.isalpha() and i == j:
		print('%02d' % count, end='')
		break
	count += 1


编辑于 2019-09-05 20:52:28 回复(0)
import re
A, B, C, D = [input() for i in range(4)]
D1 = dict(zip(list('ABCDEFG'), ['MON','TUE','WED','THU','FRI','SAT','SUN']))
D2 = dict(zip(list('0123456789ABCDEFGHIJKLMN'), [str(i) for i in range(24)]))
for k, (i, j) in enumerate(zip(A, B)):
    if i == j and re.match(r'[A-G]', i):
        print(D1[i].rjust(2, '0'), end = ' ')
        break
for i, j in zip(A[k+1:], B[k+1:]):
    if i == j and re.match(r'[0-9A-N]', i):
        print(D2[i].rjust(2, '0'), end = ':')
        break
for k, (i, j) in enumerate(zip(C, D)):
    if i == j and re.match(r'[A-Za-z]', i):
        print(str(k).rjust(2, '0'))
        break

编辑于 2019-08-26 21:09:52 回复(0)
s1 = input()
s2 = input()
s3 = input()
s4 = input()
Day = {"A":"MON","B":"TUE","C":"WED","D":"THU","E":"FRI","F":"SAT","G":"SUN"}
Hour={"0":"00","1":"01","2":"02","3":"03","4":"04","5":"05","6":"06","7":"07","8":"08","9":"09","A":"10","B":"11","C":"12","D":"13","E":"14","F":"15","G":"16","H":"17","I":"18","J":"19","K":"20","L":"21","M":"22","N":"23"}
flag = 0
for i in range(len(s1)):
    if s1[i] == s2[i] and s1[i].isupper() and ('A'<= s1[i] <= 'G') and flag == 0:
        day = s1[i]
        flag = 1
    elif s1[i] == s2[i] and s1[i].isdigit() and flag == 1:
        hour = s1[i]
        break
    elif s1[i] == s2[i] and s1[i].isupper() and ('A' <= s1[i] <= 'N') and flag == 1:
        hour = s1[i]
        break
    
for i in range(len(s3)):
        if s3[i] == s4[i] and s3[i].isalpha():
            min = i
if 0 <= min <= 9:
    min = '0' + str(min)
else:
    min = str(min)
day = Day.get(day)
hour = Hour.get(hour)
print(day + " " + hour + ":" + min)

发表于 2019-08-16 15:41:36 回复(0)
A = input()
B = input()
C = input()
D = input()

weeks = {'A':'MON','B':'TUE','C':'WED','D':'THU','E':'FRI','F':'SAT','G':'SUN'}
clock = ('ABCDEFGHIGKLMN')

message_letter = []

M = min(len(A),len(B))
N = min(len(C),len(D))

for i in range(0,M):
    if A[i] == B[i]:
        if A[i].isupper():
            message_letter.append(A[i])
            a = i
            break
for i in range(a+1,M):
    if A[i]==B[i]:
        message_letter.append(A[i])
        break
for i in range(0,N):
    if C[i] == D[i]:
        if C[i].isalpha():
            minute = i
            break
week = weeks[message_letter[0]]
if message_letter[1].isdigit():
    hour = message_letter[1]
else:
    hour = 10 + clock.index(message_letter[1].upper())
    
print(week + ' ' + str(hour).zfill(2)+ ':' + str(minute).zfill(2))
发表于 2019-07-08 13:57:26 回复(0)
ls1=input()
ls2=input()
ls3=input()
ls4=input()

ls5=[]
if len(ls1)<=len(ls2):
    min_l=len(ls1)
else:
    min_l=len(ls2) #取最短字符串长度,防止循环时溢出
    
for i in range(min_l):
    if ls1[i].isupper() and ls1[i]==ls2[i]:
        ls5.append(ls1[i])
        a=i
        break   #首先判断相同的大写字母
for n in range(a+1,min_l):
    if (ls1[n].isupper() or ls1[n].isdigit())and ls1[n]==ls2[n]:
        ls5.append(ls1[n])  #从大写字母之后的位置找相同的数字或小写字母
        
for i in range(len(ls3)):
    if ls3[i].isalpha() and ls3[i] == ls4[i]:
        M=i
        break   #找相同的字母
        
dict1={'A':'MON','B':'TUE','C':'WED','D':'THU','E':'FRI','F':'SAT',
       'G':'SUN'}
dict2={'A':'10','B':'11','C':'12','D':'13','E':'14','F':'15',
       'G':'16','H':'17','I':'18','J':'19','K':'20','L':'21',
       'M':'22','N':'23'}
D=dict1[ls5[0]]

if ls5[1].isupper():
    H=dict2[ls5[1]]
else:
    H='0'+str(ls5[1])

if M<10:
    M='0'+str(M)
else:
    M=str(M)   #一些格式的要求

print('{} {}:{}'.format(D,H,M))

发表于 2019-07-07 15:20:17 回复(0)
import sys
lines = sys.stdin.readlines()
a = lines[0].strip()
b = lines[1].strip()
c = lines[2].strip()
d = lines[3].strip()
n = min(len(a),len(b))
DAY = {'A':'MON','B':'TUE','C':'WED','D':'THU','E':'FRI','F':'SAT','G':'SUN'}
for i in range(n):
    if a[i] == b[i] and a[i] in DAY.keys():
        k = i
        day = DAY[a[i]]
        break
HOUR = {'0':'00','1':'01','2':'02','3':'03','4':'04','5':'05','6':'06','7':'07','8':'08','9':'09','A':'10','B':'11',
        'C':'12','D':'13','E':'14','F':'15','G':'16','H':'17','I':'18','J':'19','K':'20','L':'21','M':'22',
        'N':'23'}
for j in range(k+1,n):
    if a[j] == b[j] and a[j] in HOUR.keys():
        hour = HOUR[a[j]]
        break
MINUTE = [chr(i) for i in range(97,123)]
m = min(len(c),len(d))
for l in range(m):
    if c[l] == d[l] and c[l] in MINUTE:
        if l in range(10):
            minute = '0' + str(l)
        else:
            minute = str(l)
        break
print(day + ' ' + hour + ':' + minute)
发表于 2019-06-20 15:59:51 回复(0)
# -*- coding:utf-8 -*-
def function():
    str1, str2, str3, str4 = [input() for i in range(0, 4)]
    daymap = ['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN']
    day_h = []
    count = 0
    count_2 = 0
    for i in range(len(str1)):   # find DAY
        if not str1[i].isdigit() and str1[i].isupper():
            if str1[i] in str2:
                day_h.append(str1[i])
                count = i
                count_2 = str2.index(str1[i])
                break

    for i in range(count + 1, len(str1)):    # find hour
        if str1[i].isdigit() or str1[i].isupper():
            if str1[i] in str2[count_2+1:]:
                day_h.append(str1[i])
        if len(day_h) == 2:
            break
    minute = 0
    day, hour = day_h
    for i in range(min(len(str3), len(str4))):
        if str3[i] == str4[i] and str3[i].isalpha():
            minute = i
            break

    day = ord(day) - ord('A')
    if '0' <= hour <= '9':
        hour = ord(hour) - ord('0')
    else:
        hour = ord(hour) - ord('A') + 10
    return '{DAY} {HH:0>2}:{MM:0>2}'.format(DAY=daymap[day], HH=hour, MM=minute)


if __name__ == '__main__':
    print(function())
发表于 2019-05-11 00:26:38 回复(0)
import re
import string

key = []
dateK, hoursK = " ","0"
minsK = 0

for i in range(4):
    key.append(input())
pattern = re.compile(r'[A-Z]')
key1 = pattern.findall(key[0])
for i in key1:
    flag1 = re.search(i,key[1])
    if flag1:
        dateK = i
        key[0] = key[0][re.search(i,key[0]).span()[0]+1:]
        key[1] = key[1][flag1.span()[0]+1:]
        break
pattern = re.compile(r'[0-9A-Z]')
key2 = pattern.findall(key[0])
for i in key2:
    flag2 = re.search(i,key[1])
    if flag2:
        hoursK = i
        break
minslen = len(key[2]) if len(key[2]) < len(key[3]) else len(key[3])
for i in range(minslen):
    if key[2][i] == key[3][i]:
        if 'A'<= key[2][i] <= 'Z' or 'a' <= key[2][i] <= 'z':
            minsK = i
            break
dateD = {"A":"MON", "B":"TUE", "C":"WED", "D":"THU", "E":"FRI", "F":"SAT", "G":"SUN"}
hoursD = {"0":"00", "1":"01", "2":"02", "3":"03", "4":"04", "5":"05", "6":"06", "7":"07", "8":"08", "9":"09", "A":"10", "B":"11", "C":"12", "D":"13", \
          "E":"14", "F":"15", "G":"16", "H":"17", "I":"18", "J":"19", "K":"20", "L":"21", "M":"22", "N":"23"}
date = dateD[dateK]
hours = hoursD[hoursK]
mins = "0"+str(minsK) if minsK < 10 else str(minsK)
print(date+" "+hours+":"+mins)

发表于 2019-03-08 09:03:36 回复(0)
lines=[]
fori in range(4):
    lines.append(raw_input())
same_letters1=[]
fori in range(min(len(lines[0]),len(lines[1]))):
    iflines[0][i]==lines[1][i] and lines[0][i].isupper():
        same_letters1.append(lines[0][i])
same_letters2=[]
fori in range(min(len(lines[0]),len(lines[1]))):
    iflines[0][i]==lines[1][i]:
        same_letters2.append(lines[0][i])
same_letters2=same_letters2[same_letters2.index(same_letters1[0]):]
whilesame_letters2[1] not in '0123456789ABCDEFGHIJKLMN':
    same_letters2.pop(1)
same_letters3=[]
same_letters3_index=[]
fori in range(min(len(lines[2]),len(lines[3]))):
    iflines[2][i]==lines[3][i] and lines[2][i].isalpha():
        same_letters3.append(lines[2][i])
        same_letters3_index.append(i)
same_letters=[same_letters1[0],same_letters2[1],same_letters3[0]]
day={'A':'MON','B':'TUE','C':'WED','D':'THU','E':'FRI','F':'SAT','G':'SUN',}[same_letters[0]]
hour_list=[str(i) fori in range(24)]
hour=hour_list['0123456789ABCDEFGHIJKLMN'.index(same_letters[1])]
ifint(hour)<10:
    hour='0'+str(hour)
minute=same_letters3_index[0]
ifint(minute)<10:
    minute='0'+str(minute)
print '%s %s:%s'%(day,hour,minute)
这题的规则细节太多了
发表于 2018-01-05 10:26:44 回复(0)
 day_dic = {'A': 'MON', 'B': 'TUE', 'C': 'WED', 'D': 'THU', 'E': 'FRI', 'F': 'SAT', 'G': 'SUN'}
hour_dic = {'0': '00', '1': '01', '2': '02', '3': '03', '4': '04', '5': '05', '6': '06', '7': '07', '8': '08',
            '9': '09', 'A': '10', 'B': '11', 'C': '12', 'D': '13', 'E': '14', 'F': '15', 'G': '16', 'H': '17',
            'I': '18', 'J': '19', 'K': '20', 'L': '21', 'M': '22', 'N': '23'}
string_1, string_2, string_3, string_4 = input(), input(), input(), input()
day = ''
hour = ''

i = 0
while i < min(len(string_1), len(string_2)):
    if string_1[i] == string_2[i]:
        if (day != '') and (string_1[i] in hour_dic.keys()):
            hour = string_1[i]
            break
        elif string_1[i] in day_dic.keys():
            day = string_1[i]
    i += 1

i = 0
while i < min(len(string_3), len(string_4)):
    if (ord(string_3[i]) in range(65, 91)) or (ord(string_3[i]) in range(97, 123)):
        if string_3[i] == string_4[i]:
            break
    i += 1

print(day_dic[day], hour_dic[hour] + ':%02d' % i)
关键点在于字符的范围
day在A-G
hour在0-9和A-N
minute在A-Z和a-z
编辑于 2017-10-08 09:59:49 回复(0)
#!/usr/bin/env python
#-*- coding:utf8 -*-
def findTime():
    days = {'A':'MON',
            'B':'TUE',
            'C':'WED',
            'D':'THU',
            'E':'FRI',
            'F':'SAT',
            'G':'SUN'}
    time = []
    #这个循环用来找到第一个相同的大写字母,找到之后退出循环
    for i in s1:
        if i in s2 and i in days:
            time.append(i)
            break
    DAY, start, end = days[time[0]], s1.index(time[0]), s2.index(time[0])
    #start,end 分别用来记录第一个相同的大写字母在s1 和 s2的下标位置
    #因为题目说HH的范围在0~9和A~N之间,
    #找第二个相同字符就在第一个相同字母之后找符合条件的
    for i in s1[start+1:]:
        if i in s2[end+1:]:
            if 'A' <= i <= 'N' or i in "0123456789":
                time.append(i)
                break
    HH = time[1]

    if HH in "0123456789":
        HH = int(HH)
    else:
        HH = ord(HH) - ord('A') + 10

    #找s3和s4第一个相同的字符,字符条件为A~Z和a~z 找到之后退出循环   
    for i in range(len(s3)):
        if s3[i] == s4[i]:
            if 'A'<= s3[i] <= 'Z' or 'a' <= s3[i] <= 'z':
                time.append(i)
                break
    MM = time[2]
    return DAY, HH, MM


if __name__ == '__main__':
    s1 = raw_input()
    s2 = raw_input()
    s3 = raw_input()
    s4 = raw_input()
    DAY, HH, MM = findTime()
    print("%s %02d:%02d" % (DAY, HH, MM))

编辑于 2017-08-06 15:36:47 回复(0)

elemS =''
elemT=''
elemN=0
Txte1 = raw_input()
Txte2 = raw_input()
Txte3 = raw_input()
Txte4 = raw_input()
Date_dic = {'A': 'MON', 'B': 'TUE', 'C': 'WED', 'D': 'THU', 'E': 'FRI', 'F': 'SAT', 'G': 'SUN'}
Time_dic = {'0': '00', '1': '01', '2': '02', '03': '03', '4': '04', '5': '05', '6': '06', '7': '07', '8': '08', '9': '09',
            'A': '10', 'B': '11',
            'C': '12', 'D': '13', 'E': '14', 'F': '15', 'G': '16', 'H': '17', 'I': '18', 'J': '19', 'K': '20',
            'L': '21', 'M': '22', 'N': '23', 'O': '24'}
 
for i in range(len(Txte1)):
    if elemS is '':
        if Txte1[i].isupper():
            if Txte1[i] == Txte2[i]:
                elemS = Txte1[i]
    else:
        if Txte1[i] == Txte2[i]:
            elemT = Txte1[i]
            break
         
for i in range(len(Txte3)):
    if Txte3[i].islower():
        if Txte3[i] == Txte4[i] :
            elemN = i
            break
if elemN <9:
    elemNP='0'+str(elemN)
else:
    elemNP=str(elemN)
     
print Date_dic.get(elemS) +' '+ Time_dic.get(elemT) + ':' +elemNP

发表于 2017-03-06 22:25:10 回复(0)
 d1 = {'A': 'MON', 'B': 'TUE', 'C': 'WED', 'D': 'THU', 'E': 'FRI', 'F': 'SAT', 'G': 'SUN'}
d2 = {'0': '00', '1': '01', '2': '02', '3': '03', '4': '04', '5': '05', '6': '06', '7': '07',
      '8': '08', '9': '09', 'A': '10', 'B': '11', 'C': '12', 'D': '13', 'E': '14', 'F': '15',
      'G': '16', 'H': '17', 'I': '18', 'J': '19', 'K': '20', 'L': '21', 'M': '22', 'N': '23'}
result = ''
try:
    while True:
        t = []
        for i in range(4):
            t.append(raw_input())
        s0 = ''
        s1 = ''
        for i in range(min(len(t[0]), len(t[1]))):
            if t[0][i] == t[1][i] and t[0][i].isupper():
                result = d1[t[0][i]]+ ' '
                s0 = t[0][i+1:]
                s1 = t[1][i+1:]
                break
        for i in range(min(len(s0), len(s1))):
            if (s0[i].isalnum() or s0[i].isalpha()) and  s0[i] == s1[i]:
                result += d2[s0[i]] + ':'
                break
        for i in range(min(len(t[2]), len(t[3]))):
            if t[2][i].isalpha() and t[2][i] == t[3][i]:
                if i < 10:
                    result += '0'+str(i)
                else:
                    result += str(i)
                break
        print result
except EOFError:
    pass
人生苦短,我用Python
发表于 2016-11-03 16:14:31 回复(0)
d1 = {'A': 'MON', 'B': 'TUE', 'C': 'WED', 'D': 'THU', 'E': 'FRI', 'F': 'SAT', 'G': 'SUN'}
d2 = {'0': '00', '1': '01', '2': '02', '3': '03', '4': '04', '5': '05', '6': '06', '7': '07',
      '8': '08', '9': '09', 'A': '10', 'B': '11', 'C': '12', 'D': '13', 'E': '14', 'F': '15',
      'G': '16', 'H': '17', 'I': '18', 'J': '19', 'K': '20', 'L': '21', 'M': '22', 'N': '23'}
result = ''
try:
    while True:
        t = []
        for i in range(4):
            t.append(raw_input())
        s0 = ''
        s1 = ''
        for i in range(min(len(t[0]), len(t[1]))):
            if t[0][i] == t[1][i] and t[0][i].isupper():
                result = d1[t[0][i]]+ ' '
                s0 = t[0][i+1:]
                s1 = t[1][i+1:]
                break
        for i in range(min(len(s0), len(s1))):
            if (s0[i].isalnum() or s0[i].isalpha()) and  s0[i] == s1[i]:
                result += d2[s0[i]] + ':'
                break
        for i in range(min(len(t[2]), len(t[3]))):
            if t[2][i].isalpha() and t[2][i] == t[3][i]:
                if i < 10:
                    result += '0'+str(i)
                else:
                    result += str(i)
                break
        print result
except EOFError:
    pass
人生苦短,我用Python
发表于 2016-10-28 00:26:05 回复(0)

问题信息

难度:
21条回答 35731浏览

热门推荐

通过挑战的用户