在 Python 中解决回文“Triangle Quest”难题

新手上路,请多包涵

我正在尝试解决这个编程难题:

给定一个正整数 N (0 < N < 10)。你的任务是打印一个大小为 N 的回文三角形。

例如,大小为 5 的回文三角形是:

>  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])

”`

有更优雅的解决方案吗?

原文由 planetp 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 643
2 个回答

我最终做了以下事情(感谢@raina77ow 的想法):

 for i in range(1, N+1):
    print((111111111//(10**(9-i)))**2)

原文由 planetp 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

原文由 Alex Aza 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题