C语言小丑谜题:破解字符乱码
C语言小丑谜题:破解字符乱码
布鲁斯·韦恩收到了小丑寄来的谜题。
谜题是由数字和字母组成的乱码。经过管家阿福的仔细分析,乱码规律如下:
- 乱码开头一定是数字,数字代表了索引
- 数字(1-9)代表了下一个字符开始计算的索引
- 根据索引读取字符内容
- 读取到0时字符结束
比如以下的乱码:'1B1a1t1m22a333n0'
破解之后为:'Batman'
输入
输入第一行为整数n,代表一共给出n行乱码
下面n行的每一行都是单独的乱码
输出
输出n行乱码的解,每个解单独一行
输入样例 1
2
1B1a1t1m22a333n0
1J22o1k1e1r0
输出样例 1
Batman
Joker
提示
n = int(input())
for _ in range(n):
code = input().strip()
idx = 0
result = ""
while idx < len(code):
if code[idx].isdigit():
idx += 1
next_idx = int(code[idx]) - 1
result += code[next_idx]
else:
break
idx += 1
print(result)
解析
根据题目描述,我们可以使用循环遍历每一行的乱码,然后通过索引规则依次破解每个字符。在循环中,我们维护一个指针idx来指示当前要读取的字符的索引。如果当前字符是数字,我们将其加1得到下一个字符的索引next_idx,然后将乱码中的字符加入到结果result中。如果当前字符不是数字,说明乱码已经破解完毕,跳出循环。最后输出结果result即可。
原文地址: https://www.cveoy.top/t/topic/Uwm 著作权归作者所有。请勿转载和采集!