鱼C论坛

 找回密码
 立即注册
查看: 14428|回复: 112

[技术交流] 【Challenge】仅用一条循环语句完成的乘法表

[复制链接]
发表于 2015-9-12 13:26:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 wei_Y 于 2015-12-25 18:57 编辑


f89963b9-5413-4f0e-b7be-1126c2a6716e.jpg

财富,名声,权利。拥有这一切的人——小甲鱼老师,在被行刑前说了一句话,让全世界的人都奔向了编程的怀抱:"想要我的宝藏么?如果想要的话,那就来编程吧,我把一切都放在了哪里!",从此,"大编程时代"来临了。


好啦。蛋不多扯。

进入

challenge_ident2007b.jpg

题目:

这次的挑战题目很简单,只要按规则输出乘法表就OK。

规则:

1.   n可以为任意整数。
2.   一行行打印无效。
3.   代码超过30行无效。
4.   不允许出现各种形式的判断,if 等。
5.   不允许出现各种形式的异常。
6.   只允许出现一次循环。range 算一个循环。但是可以和 for 连用:
  1. for i in range(1)
复制代码

7.   循环体内只允许出现一个变量。这样也是不被允许的
  1. for i, j in zip(x, y)
复制代码

8.   不允许使用任何模块。内置函数是可以的。
9.   请使用 Python3.X 版本。
10. 本活动最终解释权归@~风介~ @戴宇轩 and @wei_Y所有。

栗子:
  1. test(10)
复制代码

以这样的形式输出。
  1. 1
  2. 2 4
  3. 3 6 9
  4. 4 8 12 16
  5. 5 10 15 20 25
  6. 6 12 18 24 30 36
  7. 7 14 21 28 35 42 49
  8. 8 16 24 32 40 48 56 64
  9. 9 18 27 36 45 54 63 72 81
  10. 10 20 30 40 50 60 70 80 90 100
复制代码


奖励:

一等奖(Reed):500鱼币 + 小鱼进步勋章

二等奖:Loser

三等奖:Loser

评分

参与人数 2荣誉 +6 鱼币 +6 贡献 +7 收起 理由
jiagd0105 + 1 + 1 + 2 支持楼主!
~风介~ + 5 + 5 + 5 支持楼主!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-9-13 13:57:04 | 显示全部楼层
本帖最后由 戴宇轩 于 2015-9-20 11:41 编辑

获胜者: Reed
  1. def test(n):
  2.     for i in range(1, n+1):
  3.         print(' '.join(list(map(str, list(map(lambda x: x[0] * x[1], list(enumerate([i] * i, 1))))))))
复制代码
  1. for i in range(1,int(input())+1):print(' '.join(map(lambda x:str(x[0]*x[1]),enumerate([i]*i,1))))
复制代码


最简短,效率最高答案(wei_Y提供想法)
  1. a=range(1,int(input())+1);list(map(lambda x:print(' '.join(map(lambda y:str(x*y),a[:x]))),a))
复制代码


我写的:
  1. for i in range(1,int(input())+1):print(' '.join(map(str,filter(lambda x:not x%i,list(zip(*enumerate([0]*i**2,1)))[0]))))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-18 19:29:11 | 显示全部楼层
  1. def test(n):
  2.     for i in range(1, n+1):
  3.         print(' '.join(list(map(str, list(map(lambda x: x[0] * x[1], list(enumerate([i] * i, 1))))))))

  4. test(11)
复制代码


一定要这样才算一个变量?和上面没区别啊。 还是说问题出在别的地方,比如map
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-12 16:02:28 | 显示全部楼层

回帖奖励 +3 鱼币

想要我的鱼币吗,要的话就都给你--哥尔D甲鱼

评分

参与人数 1荣誉 +6 鱼币 +6 收起 理由
wei_Y + 6 + 6 说得好,我认输~。

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-12 18:33:50 | 显示全部楼层

回帖奖励 +3 鱼币

嗯,好啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-12 18:55:03 | 显示全部楼层

回帖奖励 +3 鱼币

先热身,暂时只能想到这个,待会继续想想
  1. for i in range(1,10):
  2.     for j in range(1, i + 1):
  3.         if j != 0:
  4.             print("%s * %s = %s\t" % (j, i, i * j)),
  5.     print("\n"),
复制代码

评分

参与人数 1荣誉 +6 鱼币 +6 收起 理由
wei_Y + 6 + 6 重在参与~~。

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-12 18:58:10 | 显示全部楼层
zengo 发表于 2015-9-12 18:55
先热身,暂时只能想到这个,待会继续想想

没审题,这个回复你们先无视吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-12 20:20:20 From FishC Mobile | 显示全部楼层

回帖奖励 +3 鱼币

十条print语句不行吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-12 23:15:11 | 显示全部楼层

回帖奖励 +3 鱼币

  1. test = ['1',
  2.         '2 4',
  3.         '3 6 9',
  4.         '4 8 12 16',
  5.         '5 10 15 20 25',
  6.         '6 12 18 24 30 36',
  7.         '7 14 21 28 35 42 49',
  8.         '8 16 24 32 40 48 56 64',
  9.         '9 18 27 36 45 54 63 72 81',
  10.         '10 20 30 40 50 60 70 80 90 100']
  11. for x in test:
  12.     print(x)
复制代码


哈哈虽然没意义但你没说不让这样啊·!:lol:

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
戴宇轩 + 2 + 2 差评。。。

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-12 23:27:08 | 显示全部楼层

回帖奖励 +3 鱼币

本帖最后由 FangC7 于 2015-9-12 23:28 编辑
无所谓无的 发表于 2015-9-12 23:15
哈哈虽然没意义但你没说不让这样啊·!


可以有····
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-13 00:17:56 | 显示全部楼层

回帖奖励 +3 鱼币

很想知道,甲鱼兄是被红烧还是清蒸???

评分

参与人数 1荣誉 +6 鱼币 +6 收起 理由
wei_Y + 6 + 6 不来玩玩么,赢了就告诉你~~。

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-13 09:33:48 | 显示全部楼层

回帖奖励 +3 鱼币

蛋蛋扯痛了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-13 12:32:43 | 显示全部楼层

回帖奖励 +3 鱼币

海贼王
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-13 21:14:10 | 显示全部楼层

回帖奖励 +3 鱼币

本帖最后由 戴宇轩 于 2015-9-13 22:16 编辑

不知道Python的语法是啥,下面是我用按键精灵的脚本语法编写的,逻辑思维一样。
  1. Dim a, b,num,str
  2. a = 1
  3. b = 1
  4. num = 9
  5. For (1 + num) * num / 2
  6.         str = str & "    " &a & "*" & b & "=" & a * b
  7.         b = b + 1
  8.         If b > a Then
  9.            a = a + 1
  10.            b = 1
  11.            TracePrint str
  12.            str = ""
  13.         End If
  14. Next
复制代码
翻译成Python
  1. num = 9
  2. str = ''
  3. a = 1
  4. b = 1
  5. for _ in range((1 + num) * num / 2):
  6.     str = '%s    %d*%d=%d' % (str, a, b, a * b)
  7.     b += 1
  8.     if b > a:
  9.         a += 1
  10.         b = 1
  11.         print(str)
  12.         str = ''
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-14 09:03:25 | 显示全部楼层
谢谢楼主!哈哈哈哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-14 09:34:30 | 显示全部楼层

回帖奖励 +3 鱼币

答案奉上,不知有没有违反哪条规则:
  1. #! /usr/bin/env python
  2. #coding=utf-8
  3. for i in range(1, 10):
  4.     for j in range(1, i+1):
  5.         print (str(j) + ("*") + str(i) + ("=") + str(j*i)) ,
  6.     print ("\n")
复制代码

评分

参与人数 1荣誉 +6 鱼币 +6 收起 理由
戴宇轩 + 6 + 6 热爱鱼C^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-14 10:21:26 | 显示全部楼层

回帖奖励 +3 鱼币

支持 我也来试一试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-14 11:05:24 | 显示全部楼层

回帖奖励 +3 鱼币

顶楼主
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-14 14:05:57 | 显示全部楼层

回帖奖励 +3 鱼币

print ('\n'.join([' '.join(['%-2s' % (x*y) for y in range(1,x+1)]) for x in range(1,11)]))
能力有限,只能写出这种,如果不对的话,请大神给出正解,让小弟学习学习

评分

参与人数 1荣誉 +6 鱼币 +6 收起 理由
戴宇轩 + 6 + 6 热爱鱼C^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-14 17:00:04 | 显示全部楼层
a794581572 发表于 2015-9-14 14:05
print ('\n'.join([' '.join(['%-2s' % (x*y) for y in range(1,x+1)]) for x in range(1,11)]))
能力有限 ...

是啊 2个循环 2个变量,你能告诉我一个循环一个变量的怎么写吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-14 18:43:03 | 显示全部楼层

回帖奖励 +3 鱼币

这玩意真能做出来吗。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-5 14:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表