单循环两行代码打印出三角形

2015-05-11 16:12:21 +08:00
 WKPlus

在hackerrank上面看到一个蛮好玩的题目: https://www.hackerrank.com/contests/pythonist/challenges/python-quest-1

想了半天没有什么好办法,最后用了一个比较“猥琐”的解法:

for i in range(1,input()): 
    print [1,22,333,4444,55555,666666,7777777,88888888,999999999][i-1]

题目的限制比较多:
1. 只能两行代码,且第一行已经写好了
2. 只能用一个循环
3. 不能用string相关的操作

有人有其他有趣的解法么?

4147 次点击
所在节点    Python
24 条回复
FastMem
2015-05-11 16:30:13 +08:00
研究了 半天也不知道PHP怎么两行。。
pathletboy
2015-05-11 16:32:49 +08:00
```python
for i in range(1,input()):
print(("%d"%(i))*i)
```
这个合格?
phx13ye
2015-05-11 16:33:22 +08:00
print i * str(i)
为什么我零分啊
hahastudio
2015-05-11 16:42:28 +08:00
这个简单啊,这根本就不是编程题,这个是数学题,求数列通项
print i * (10 ** i - 1) / 9

我觉得我能解出来是因为我太年轻。。。
wartime
2015-05-11 16:42:50 +08:00
print reduce(lambda x, y: x * 10 + y, [i] * i)
nlimpid
2015-05-11 16:45:38 +08:00
print int('1'*i)*i
imn1
2015-05-11 16:46:12 +08:00
@FastMem
SPL迭代器或者可以,不过我都忘得差不多了
oott123
2015-05-11 16:47:04 +08:00
print("▲")
staticor
2015-05-11 16:55:05 +08:00
同5楼, 楼主做几套公务员行测数量的几个数列题目就知道思路了
batman2010
2015-05-11 16:55:09 +08:00
foreach my $i (1..9) { print $i x $i, "\n"; }
mulog
2015-05-11 16:55:21 +08:00
@pathletboy
@phx13ye
@nlimpid

Note Using anything related to string will give a score of 0.
dingyaguang117
2015-05-11 16:59:10 +08:00
```
for i in xrange(1,10):
print str(i)*i
```
est
2015-05-11 17:11:21 +08:00
@mulog 惨!
aec4d
2015-05-11 17:12:55 +08:00
用近似欺骗的手段通过了Orz
what = lambda x: 1 if x == 1 else pow(10, x-1) + what(x - 1);print(what(i)*i)
YORYOR
2015-05-11 17:15:53 +08:00
@oott123 给跪了
feiyuanqiu
2015-05-11 17:29:37 +08:00
这个题有个问题,当 N >= 10 之后,应该怎么显示呢?
是显示 10 个 10 ?(这样就不是三角形了,这一行有 20 个字符)
或者其他样式显示?(这样整个规则跟前面的就不一致了)

不考虑 N >= 10 的 php 代码:

用字符串:
for ($i=1; $i <= $_GET['N']; $i++)
printf("%s<br>", str_repeat($i, $i));

不用字符串:
for ($i=1, $base = 1; $i <= $_GET['N']; $base+=pow(10, $i), $i++)
printf("%s<br>", $i*$base);
zonghua
2015-05-11 17:30:31 +08:00
我发现我智商不够
fangjinmin
2015-05-11 17:40:49 +08:00
print str(i) * i
zealot0630
2015-05-11 17:53:14 +08:00
print i * sum([10**j for j in range(0, i)])

不懂为什么fail
shuson
2015-05-11 17:55:42 +08:00
给我用单循环两行代码画个三角形
我给你钱

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/190195

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX