您的老板刚刚通过电子邮件给您列出了他需要尽快完成的12个编程任务的列表。任务很简单,但是作为社交网络支持的年轻软件大亨,您的老板坚持认为,您的解决方案必须能够在单个Twitter微博中使用。
这意味着您只有140字节的代码可解决所有任务,平均每个任务11.67字节。(是的,Twitter 计算字符,但您的老板专门说了字节。)
您意识到无法解决140字节中的所有12个任务,但是您怀疑老板不会实际测试所有解决方案。因此,您可以继续解决尽可能多的任务,而完全跳过其中的一些任务。您的心态是,完成任务的哪个子集无关紧要,只重要的是子集尽可能大。
您可以完成多少个任务?
挑战
编写多达12个不同的程序,每个程序都能准确解决以下12个任务之一。这些程序的长度的累积总和不能超过140个字节
或者,您可以编写一个长度不超过140个字节的程序,该程序取1到12之间的整数,并且(理想情况下)继续解决相应的任务,并根据需要输入更多的信息。并非所有任务都需要工作,只有那些确实可以计入您的分数的任务才能工作。无效的任务将允许错误或执行其他任何操作。
在任何一种情况下,“程序”实际上都是将输入作为参数或对其进行提示并打印或返回输出的函数。因此,例如,您可以编写一个看起来像的140字节的函数f(taskNumber, taskInput)
,或者您可以为每个任务编写单独的代码段,其中一些作为函数,而某些则作为成熟的程序。
其他详情:
所有代码必须使用相同的语言编写。
像往常一样,输入应该来自stdin,命令行,函数参数或您的语言常用的东西。输出将输出到标准输出或您的语言最接近的替代版本,或以适当的类型返回。
合理数量的输入格式是可以的;例如,用引号引起来的字符串或
\n
代替实际的换行符。输出应该完全是所要求的,没有多余的格式或空格。唯一的例外是尾随换行符。
仅在REPL环境中运行的代码不构成程序或功能。
您可能不会编写解决多个任务的多个程序。是一个程序(理想地)解决所有任务,或者是(理想地)12个程序分别解决一个任务。
未经原作者的署名,并且最好也获得许可,不允许发布您未编写或仅稍作修改的任务解决方案。如果您的答案主要是所有其他答案中最短的解决方案,则它应该是社区Wiki。
计分
完成最多任务的提交是获胜者。如果两个提交并列,则字节数最少的一个获胜。如果字节计数并列,则较早的提交将获胜。社区维基答案不允许获奖。
确保告诉我们您解决了哪些任务,而不仅仅是告诉我们!
非高尔夫球员的障碍:
这项挑战很可能将以高尔夫语言为主导。许多语言甚至可能无法解决140字节内的一两个任务。因此,您可以提交非竞争性答案,其限制为3条推文,即420字节。所有其他规则保持不变。
任务
任务1-三个数字可以形成三角形吗?
取三个正整数并输出一个true / falsy值,该值指示具有这些长度的三行是否可以形成三角形。您可能不认为数字按任何特定顺序排列。
真实的示例(每行一个):
20 82 63
1 1 1
2 3 4
1 2 2
虚假的例子:
6 4 10
171 5 4
1 1 2
1 2 3
任务2-接近一百万
给定一个正好是7个十进制数字(0-9)的字符串,请重新排列它们以获得尽可能接近一百万的数字。也就是说,abs(1000000 - rearrangedNumber)
应将其最小化。
将结果数字打印或返回为整数,而不是字符串(因此,除非这是您所用语言的规范,否则不应以零开头)。
例如,输入的9034318
结果应为984331
(而不是1033489
)。
2893984
应该成为2348899
。
0001000
应该成为1000000
。
0000020
应该成为200000
。
任务3-简单的键盘模拟器
输入一串小写字母(az),空格和尖括号<>
。从左到右读取,该字符串表示打开最初为空的文本编辑器时在标准键盘上按下的键。字母和空格对应于它们的常规键,但<
对应于左箭头键和>
右箭头键,当按下它们时,它们都将移动光标。
<
将光标向左移动一个字符;如果光标位于字符串的开头,则不执行任何操作。
>
将光标向右移动一个字符,如果光标位于字符串的末尾,则不执行任何操作。
按下输入字符串中的所有键后,输出将在文本编辑器中显示的字符串。不允许输出转义码来移动光标。
输入中将始终至少有一个非箭头键字符。
例如输入ui<<q>>ck <<<<<<the<<<<>>> >>>>>>>>brown x<o<f
应该屈服the quick brown fox
。
op<<l>>t<<<lam>>>>>>imi<<<><>>>zer<<<<<<<<<<<<<<<<<<>>><>m
应该给llammoptimizer
。
e< <c<b<a
应该给abc e
。
<<<>><><<><toast>><<>><><<>><
应该给toast
。
任务4-填写信件
在许多字体,大写英文字母的6完全由水平线和垂直线:E
,F
,H
,I
,L
,和T
。我们称这些为FILTHE字母。
输入一串大写字母(AZ)并计算FILTHE字母中的行数,并输出结果整数。
E
,F
,H
,I
,L
,和T
分别具有4,3,3,3,2和2行。
例如GEOBITS
,FILTHE字母(用于.E..IT.
)有4 + 3 + 2 = 9行,因此输出应为9
。
ABCDEFGHIJKLMNOPQRSTUVWXYZ
应该输出17
。
ABCDGJKMNOPQRSUVWXYZ
应该输出0
。
FILTHYLINESINLETTERS
应该输出39
。
任务5-亚历克斯递归 A.
我们的主持人Alex A.的名字缩写为“ A”。
现在我不确定,但我认为A.
代表.A xelA
。而且我也很确定.A
那儿偷偷摸摸地代表Alex A.
。
因此,要获得Alex的全名,我们必须扩展A.
的和.A
:
Alex A. -> Alex [A.] -> Alex [.A xelA] -> Alex .A xelA -> Alex [.A] xelA -> Alex [Alex A.] xelA -> Alex Alex A. xelA -> etc.
让您的程序接受一个非负整数并将其扩展Alex A.
多次,输出结果字符串。
所以
0
变得Alex A.
,
1
变得Alex .A xelA
,
2
变成Alex Alex A. xelA
,
3
成为Alex Alex .A xelA xelA
,
4
变得Alex Alex Alex A. xelA xelA
,
5
变成Alex Alex Alex .A xelA xelA xelA
,
等等。
(我之所以这么做,是因为我为无意中将Alex丢进我的Mod贡品挑战而感到难过。
任务6-数字键旋转
输入1到9之间的一个整数(包括1和9)(您可以将其作为字符串)。输出3×3位数的正方形
789
456
123
以90°的增量旋转,使输入数字出现在第一行的任何位置。当5
被输入的任何旋转是因为有效的输出5
斜面被旋转到顶部。
例如,当3
输入时,两者
963
852
741
和
321
654
987
是有效的输出。
4
仅用于输入
147
258
369
是有效的输出。
任务7-将数字拆分为十位数
接受一个非空的十进制数字字符串(0-9),并输出一个真实值(如果可以将其拆分为多个连续部分,其中每个部分中的所有数字精确地相加为10)。如果不可能,则输出一个伪造的值。
例如,19306128
可以像一样拆分19|3061|28
,所有部分的总和为10(1 + 9,3 + 0 + 6 + 1,2 + 8),因此应输出真实值。
真实的示例(每行一个):
19306128
073
730
0028115111043021333109010
2222255
虚假的例子:
6810410
9218
12341
5222225
000
任务8-方钟
输入大小一致的多行字符串。
输出12
如果输入是
_ _
| | |
|_ _|
输出3
如果输入是
_ _
| |_|
|_ _|
输出6
如果输入是
_ _
| | |
|_|_|
输出9
如果输入是
_ _
|_| |
|_ _|
没有其他输入情况。
任务9-托架艺术
采取在含有每种左括号中的一个4字节串(
,[
,{
,和<
以任何顺序。
添加相应的右括号,使字符串长8个字节,并具有垂直对称线。例如[<({
成为[<({})>]
。
然后反转该字符串中的每个括号。例如[<({})>]
成为]>)}{(<[
。
在单独的行上分别输出原始的8字节括号字符串和上下颠倒的版本。
所以输入的最终输出[<({
是
]>)}{(<[
[<({})>]
]>)}{(<[
同样,的输出<({[
应为
>)}][{(<
<({[]})>
>)}][{(<
输入(<<[
无效,因为{
缺少,并且有一个额外的<
。
任务10-个性化
取一个矩形的文本网格(最小1×1),由.
代表空白空间的和X
代表实心砖的组成。超出网格边界的单元格被视为空单元。您可以假设4个网格边缘行和列中的每一个都至少包含一个X
。
例如,有效的输入可能是:
XXX.....X.....
X..X...X.X....
XXX.....X....X
输出另一个矩形的文本网格,每个与X
正交或对角线相邻的空单元格(包括输入网格外部的每个空单元格)变为o
。因此,基本上是在实心砖的o
所有部分周围绘制的的permiter 。新的网格不应大于必须的大小。
因此,上面示例的输出将是:
ooooo...ooo.....
oXXXoo.ooXoo....
oXooXo.oXoXo.ooo
oXXXoo.ooXoo.oXo
ooooo...ooo..ooo
同样,输入的输出XXX..X.X
应为
oooooooooo
oXXXooXoXo
oooooooooo
并输出
oooooooooo.
oXXXooXoXo.
oooooooooo.
将是无效的,因为不需要最右边的空白列。
您可以使用任何3级不同的打印的ASCII到位的人物.
,X
和o
。
任务11-塞特广场
输出Sator Square:
SATOR
AREPO
TENET
OPERA
ROTAS
任何字母都可以是小写或大写,因此
SatOR
aRePO
tenet
OPERa
RoTaS
也是有效的输出。
没有输入。
任务12-主推文
不输入任何内容,而是输出一个140字节的可打印ASCII字符串,该字符串包含95个可打印ASCII字符中的每个字符中的至少一个。(因此45个字符将重复。)
在此字符串中的所有140个字节的字符代码的总和必须是索菲·热尔曼质数,即质数p
,从而2p+1
也素。空格的字符代码是32,33表示!
,34表示"
,依此类推,最多126表示~
。该和可以在Python中计算为sum(map(ord, myString))
。
示例输出为:
! "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~d
字符代码和为素数12203,其对应的安全素数为24407。
import
s 计算字节?假设我写了5个函数,其中2个需要相同的模块(例如import Math
),这算两次吗?