求解回文';三角探索';Python中的难题
我试图解决这个编程难题: 给你一个正整数N(0求解回文';三角探索';Python中的难题,python,python-3.x,palindrome,Python,Python 3.x,Palindrome,我试图解决这个编程难题: 给你一个正整数N(01| 因此,解决方案 for i in range(1,int(input())+1): print(pow((((10**i - 10))//9) + 1, 2)) 这是一个简单的无字符串版本: for i in range(1, int(input()) + 1): print(sum(list(map(lambda x: 10 ** x, range(i)))) ** 2) 不知何故,现在有办法获得非零分,因为打印与字符串有
1
121
12321
1234321
123454321
你不能超过两行。你必须完成代码
只使用一个打印语句
注意:使用任何与字符串相关的内容都会得到0分。使用
多个for语句的得分为0
我只能想出“愚蠢”的方法来做到这一点:
for i in range(1, N+1):
print([0, 1, 121, 12321, 1234321, 123454321, 12345654321, 1234567654321, 123456787654321, 12345678987654321][i])
有更优雅的解决方案吗?我最后做了以下工作(感谢@raina77ow的创意): 这是一个wtf单衬里:
f=lambda n:n and[f(n-1),print((10**n//9)**2),range(1,n+1)];f(5)
规范高尔夫运动并听取simon和rain的建议:
set(map(lambda x:print((10**x//9)**2),range(1,N+1)))
只是因为目前提供的每个解决方案都涉及range(),我觉得它在Python代码中被过度使用了:
from math import log10
i = 1
while (N > log10(i)): print(i**2); i = i * 10 + 1
我可以使用以下方式以列表格式打印:
for i in range(1,5):
print [j for j in range(1,i+1) ], [j for j in range(i-1,0,-1) ]
结果:
[1] []
[1, 2] [1]
[1, 2, 3] [2, 1]
[1, 2, 3, 4] [3, 2, 1]
[1, 2, 3, 4, 5] [4, 3, 2, 1]
- 1*1=1
- 11*11=121
- 111*111=12321
我希望它会有所帮助。我认为下面的代码应该可以工作。我使用了最基本的方法,所以大多数人都会理解:
N = int(input())
arr = []
for i in range(1,N+1):
arr.append(i)
print(arr+arr[-2: :-1])
使用此代码:
prefix = ''
suffix = ''
for i in range(1,n):
middle = str(i)
string = prefix + middle + suffix
print(string)
prefix = prefix + str(i)
suffix = ''.join(reversed(prefix))
基本上在每次迭代中,字符串中的数字“1”乘以i,然后转换为整数,然后求平方。例如
在第三次迭代中-->输出=111^2=12321
编辑:注意到约束是用str()函数来回答的
我们有一个序列1,11,111,1111
n=an+(a(r^(n-1)-1))/(r-1),其中| r>1|
因此,解决方案
for i in range(1,int(input())+1):
print(pow((((10**i - 10))//9) + 1, 2))
这是一个简单的无字符串版本:
for i in range(1, int(input()) + 1):
print(sum(list(map(lambda x: 10 ** x, range(i)))) ** 2)
不知何故,现在有办法获得非零分,因为打印与字符串有关。请注意,121=11*11、12321=111*111等。更好的方法是:
print((10**i//9)**2)
。这将按空格分隔数字(并且不允许使用sep=“
)@planetp,它按空格分隔数字是正确的,但是OP没有明确规定不允许用空格分隔数字——毕竟,答案仍然是一个回文三角形,只有空格:)然而,即使它无效,我认为它值得包括在内,因为它可能比数学答案更容易理解:)去派对太晚了,但是python reduce(lambda x,y:x*10+y,list(range(1,i+1))+list(range(i-1,0,-1))
。不编辑代码块本身。
for i in range(1,int(input())+1):
print(int((10**i-1)/9)**2)
1 -> ( 10 - 1) / 9 = 1, 1 * 1 = 1
2 -> ( 100 - 1) / 9 = 11, 11 * 11 = 121
3 -> ( 1000 - 1) / 9 = 111, 111 * 111 = 12321
4 -> (10000 - 1) / 9 = 1111, 1111 * 1111 = 1234321
for i in range(2,int(raw_input())+2):
print ''.join(([unicode(k) for k in range(1,i)]))+""+''.join(([unicode(k) for k in range(i-2,0,-1)]))
print ''.join(map(unicode,range(1,i)))+""+''.join(map(unicode,range(i-2,0,-1)))
N = int(input())
arr = []
for i in range(1,N+1):
arr.append(i)
print(arr+arr[-2: :-1])
prefix = ''
suffix = ''
for i in range(1,n):
middle = str(i)
string = prefix + middle + suffix
print(string)
prefix = prefix + str(i)
suffix = ''.join(reversed(prefix))
for i in range(1,int(input())+1):
print(int(str('1'*i))**2)
for i in range(1,int(input())+1):
print(pow((((10**i - 10))//9) + 1, 2))
for i in range(1,int(input())+1): #More than 2 lines will result in 0 score. Do not leave a blank line also
print(''.join(list(map(lambda x:str(x),list(range(i+1))[1:]))+list(map(lambda x:str(x),list(reversed(list(range(i))[1:]))))))
for i in range(1, int(input()) + 1):
print(sum(list(map(lambda x: 10 ** x, range(i)))) ** 2)