是时候进行另一次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)