Pyth练习2


21

是时候进行另一次Pyth实践了。我在这里展示8个问题陈述,每个陈述都有一个Pyth解决方案。这些解决方案由Pyth初学者编写。他对这些解决方案感到非常满意,因为它们比他的Python回答要短得多。但是,您的任务是向他展示更好。创建等效但较短的程序。

这是在Pyth打高尔夫球时可以使用的技巧和优化的挑战。Pyth高尔夫球手可能会意识到其中涉及的许多技巧,因此可以缩短解决方案的时间。但是,某些问题将需要一些很少使用的异常方法。我实际上从未在野外见过的一些技巧。但是,没有解决方案需要任何错误或奇怪的行为,而这并不是Pyth的设计人员故意设计的。自该问题发布以来,所有答案都必须对最近的Pyth提交(2b1562b)有效。您可以使用Pyth解释器供测试用。目前,它是最新的,我不希望Pyth发生任何大变化,否则将使最佳解决方案失效或使更短的解决方案成为可能。在线解释器还具有新的角色参考。由于它是非常新的,因此您(也应该)也可以使用旧的docs,以防某些错误或遗漏。

目标:参考解决方案总计81个字节。您的目标是尽可能地击败它。用最小的总字节数解决所有8个问题的提交将获胜。决胜局是提交日期。

当然,只有提交的内容有效,其中包含所有8个问题的解决方案。如果您不能提高一个(或多个)特定问题的分数,则可以使用参考实现。

您的解决方案必须输出与参考解决方案完全相同的输出。除了可选的尾随换行符。

由于这是一种Pyth做法,因此仅允许使用Pyth语言编写的程序。

回答:请搅局整个答案,除了你的总得分。您打算在提交自己的答案之前不要看别人的答案。您可以通过>来创建剧透。在每一行的前面,例如:

>! Problem 1: V9m?>dNd0S9 (11 bytes)
>! Problem 2: VTN)VGN (7 bytes)
>! ...

我希望我没有选择太困难或太琐碎的问题。希望有很多参与者,也希望每个人都能对Pyth有所了解。打高尔夫球快乐!

问题一:

创建以下9x9矩阵并进行打印:

[1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 0, 3, 4, 5, 6, 7, 8, 9]
[0, 0, 0, 4, 5, 6, 7, 8, 9]
[0, 0, 0, 0, 5, 6, 7, 8, 9]
[0, 0, 0, 0, 0, 6, 7, 8, 9]
[0, 0, 0, 0, 0, 0, 7, 8, 9]
[0, 0, 0, 0, 0, 0, 0, 8, 9]
[0, 0, 0, 0, 0, 0, 0, 0, 9]

参考解决方案(链接):

V9m?>dNd0S9 (11 bytes)

问题2:

在单独的行上打印所有数字和所有字母:

0
...
9
a
...
z

参考解决方案(链接):

VTN)VGN (7 bytes)

问题三:

查找在字典上最小的回文,在字典上大于或等于包含小写字母的输入字符串,并且与输入字符串相同。

a -> a
abc -> aca
adcb -> adda

参考解决方案(链接):

hf&gTzqT_T^Glz (14 bytes)

问题4:

检查数字是否在[0,输入数字]范围内。这也应适用于浮动。

4, 6 -> True
5.5, 6 -> True
6, 6 -> False
6, 6.1 -> True

参考解决方案(链接):

&gQ0<QE (7 bytes)

参考格式为to be tested value<newline>end value。但是,您可以选择其他输入格式。重要的是,您要完成问题陈述并产生正确的结果。

问题5:

解析格式为“ \ d + [a-zA-Z] +”的输入字符串。请注意,数字实际上必须是数字,而不是包含数字的字符串。

'123Test' -> [123, 'Test']

参考解决方案(链接):

A.ggk\Az,sGH (12 bytes)

问题6:

计算以一个或多个逗号分隔的数字总和。您可以假定字符串中至少有一个数字。

11,2,,,3,5,,8 -> 29

参考解决方案(链接):

svM:z",+"3 (10 bytes)

问题7:

从输入中读取正整数,直到得到数字0。打印所有数字的总和。

参考解决方案(链接):

WJE=+ZJ)Z (9 bytes)

问题8:

求和一个方阵的所有元素,除了主要对角线(左上角到右下角)。

参考解决方案(链接):

-ssQs.e@bkQ (11 bytes)

我真的很喜欢特定于语言的问题的想法(我对此表示赞同)。但是我认为特定于语言的问题在PPCG中不受欢迎吗?
路易斯·门多

3
@LuisMendo我认为,如果问题背后的原因是普遍不喜欢高尔夫语言(如CJam,Pyth等),或者因为OP仅能理解某些语言,那么仅针对特定语言的问题就不会被接受了。这有点不同。这个问题的主要目的是显示流行的(在PPCG上)语言的一些更隐藏的功能。在某种程度上,它就像是把戏的集合。允许每种语言都没有意义。这是有关此主题的元文章:链接
Jakube

在6中,数字是否为正一位整数?
xnor

@xnor您可以假定它们是正数,但它们可能包含多个数字。我将更改测试用例。
雅库布

1
我投票结束这个问题是因为题外,因为这是一个多部分的挑战,各部分之间没有交互
pppery

Answers:


9

59 58 56字节

问题一:

j.tmLdS9Z (9个字节)

问题2:

MTjG (5个字节)(第一个字符是换行符)

问题三:

h.f_IZ1z (8个字节)

问题4:

%IQE (4字节)

问题5:

,J.vz-zJ (8个字节)

问题6:

srXz\,d7 (8个字节)

问题7:

u+GE0 (5个字节)

问题8:

ss.DR~hZQ (9个字节)


2

66个字节

1. 10个字节:V9+mZN}hN9
2. 6个字节:jUT)jG
3. 8个字节:h.f_IZ1z
4.(参考实现)7个字节:&gQ0<QE
5. 11个字节:,sK-rzZG-zK
6. 7个字节:ssMcz\,
7. 8个字节:s<.Qx.QZ
8. 9个字节:ss.eXbkZQ


2

68 67 66 65字节

任务1

10个字节: V9m*d>dNS9

任务2

5个字节:\nMTjG,哪里\n是换行符

任务3

9个字节: h.fqZ_Z1z

任务4

5个字节: qQ%QE

任务5

参考解决方案,12字节: A.ggk\Az,sGH

任务6

7个字节: ssMcz\,

任务7

8个字节: s<.Qx.Q0

任务8

9个字节: ss.DVQUlQ


1

54字节

这是预期的解决方案。除了任务8,找到了所有解决方案。

1. j.tmLdS9Z(9字节)将map用于左图,转置并填充零
2. \ nMTjG(5字节)将换行用于map
3. h.f_IZ1z(8字节)使用.f
4 生成可能的字符串。%IQE(4个字节)找到了一个用例,其中不变运算符需要2个参数
5。,J.vz-zJ(8个字节).v仅计算字符串的第一个语句,而忽略其余
6个。ssMcz \,( 7字节)s“” = 0
7. u + GE0(5字节)减少直到达到
已知数8。ss.DVQUQ(8字节)使用矢量化删除对角线


妈的,我忘了Ul的名单!
lirtosiast '16

1
擅长用自己的语言击败isaacg。
Stan Strum,

1

 60 59  57字节

1. 9个字节j.tmRdS9Z


2. 6个字节jbUTjG


3. 8个字节h.f_IZ1z


4. 4个字节}sEU


5. 8个字节,K.vz-zK


6. 7个字节ssMcz\,


7. 8个字节s<FxB.Q0


8. 11 10 7字节ss.DVQU 以前的版本:ss.e+<bk>bh

请注意,尽管我参加聚会很晚,但我完全独立于其他答案来开发了此解决方案。


很好的尝试。第三个问题是8个字节。
Jakube '17

而且我很确定,当时的问题8的解决方案尚未编译。但是我还没有测试过。
雅库布

@Jakube哦,谢谢!
Xcoder先生17年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.