避免在五个简单程序之间重复字母


12

您面临的挑战是为以下五个任务编写5个不同的完整程序:

  1. 打印 Hello, World!

  2. 给定带有STDIN的输入,输出阶乘,可以假定输入是> = 0的整数

  3. 给定整数N,计算素数之和<= N

  4. 给定带有STDIN的输入,输出在输入中使用的字母。例如:输入为Hello world,则需要输出helowrd。请注意,输出为小写。您可以假设输入始终是带有空格的字母,空格将被忽略。

  5. 完全像这样输出以下菱形:

       *
      ***
     *****
    *******
     *****
      ***
       *
    

所有这些挑战可能非常容易,但是有一个陷阱。您使用的每个字母都不能在其他程序中再次使用。这不是禁止的,但是会给您+8个字节的罚款。例如,如果这是您执行第一个任务的程序:

print("Hello, World!");

那么你就不能使用下列字母(大写或小写形式): ,printhel,,o 在其他程序。如果必须使用它们,则可以“购买”每个字母8个字节。因此,如果您想在另一个程序中再次使用该字母,则会受到8个字节的惩罚。支付罚款后,您可以在此程序中随意使用每个字母。其他字符无关紧要。另外,所有5个程序都应使用相同的语言。wdl

这是,因此最少的字节数会获胜!


3
这与我们已经面临的挑战稍有不同,但是并没有太大的不同,以至于在我看来不会成为多重对象。
Mego 2015年

3
@Mego我将投票关闭此游戏,并且没有限制,但该限制使其成为一款全新游戏。
trichoplax

1
如果您在3个程序中使用给定字母,是否要两次支付8个字节的罚款(16个字节)?
trichoplax

1
@trichoplax,是的,您需要支付16个字节
Adnan

1
@trichoplax几乎没有。解决受骗问题的现有解决方案仍将具有竞争力。这里最重要的解决方案是被假问题的解决方案的组合,罚则更高。
Mego 2015年

Answers:


10

CJam,73个字节

"Obkkh+'Phukc&"7f^
q~m!
ri){'j3+_3++~},:+
lS-el_&
4{_' *4@-Y*('**+}%_1>W%\+N*

每行是一个完整的程序。在线尝试:1 | 2 | 3 | 4 | 5

字母图

 bc  f h  k   op    u       18
            m   q            4
        ij       r          17
    e      l      s          7
             n        w y   27

如果需要(每个程序都适合一行),则可以使用此CJam程序为自己的提交创建一个字母映射。


证明osascript不是为此而构建的:您的整个提交少于我的程序的2。XD +1,干得好。
艾迪生·克伦普

4

Pyth,90个字节

第一次尝试...

任务1:20个字节

+"Hello, "+C87"orld!

任务2,3个字节

.!Q

任务3,9个字节

sf}TPTSvz

任务4、6 + 8 = 14字节

@G{rw0

任务5,44个字节

"   *
  ***
 *****
*******
 *****
  ***
   *

3

osascript,759字节

我知道刚开始的时候会很多。OO

任务1:15个字节

“你好,世界!”

我知道从现在开始情况会很糟糕。

任务2:64 + 8 * 4 = 96字节

在运行
设置为1
重复一个
将o设置为a * o
将a设置为a-1
结束
Ø
结束

哎呀

任务3:170 + 8 * 13 = 274字节

在运行
将o设为0
将t设置为false
重复从2到a
将t设置为true
用c从2重复到i-1
如果我mod c = 0,则将t设置为false
结束
如果t然后将o设置为o + i
结束
结束

丹尼斯≠出气。

任务4:225 + 8 * 13 = 329

在运行
设置为“”
在一个项目中与我重复
在i的字符中用c重复
如果c不在o中,则
如果c <91的ASCII数则
将o设置为o&(ASCII字符((c + 32的ASCII数))
其他
将o设置为o&c
结束
结束
结束
结束
Ø
结束

...

任务5:45个字节

*
  ***
 *****
*******
 *****
  ***
   *“

是的。我知道我一开始就要输。但这很有趣,我很想知道是否有一种方法可以减少字符数。角色图(由丹尼斯提供):

   赫洛夫15
cdef hi lmnop rstu w 160
每日头条57
abcdef hi lmnop rstu w 214
                            39
                             0

上面的字符数略有减少-换行符出现了问题,因为未计算换行符。

注意:之所以不使用诸如此类a's characters之类的东西,是因为'从osascript命令行执行时必须使用该字符。如果我曾经使用过',我将不得不使用\'或类似的东西,这对我完全没有帮助。另外,它只识别"为字符串捕获器,所以我也被困在那里。但这很有趣。


1

NARS2000 APL,144个字节(85个字符)

任务1,21个字节(17个字符)

⎕←"Hello, World!"

任务2,10个字节(4个字符)

⎕←!⎕

任务3,22个字节(11个字符)

⎕←+/¯2π⍳2π⎕

任务4,53个字节(29个字符)

⎕←∪Q[26∣Q⍸⍞∩Q←⎕AV[97+⍳26]∪⎕A]

任务5,38个字节(24个字符)

⎕←" *"[1+4<∘.+⍨(⍳3),⊖⍳4]

1
这些实际上是完整程序吗?我不知道NARS2000(并且在我的平台上不可用),但是我知道的所有方言都需要分配以在REPL之外打印。
丹尼斯

@Dennis对不起,忘了我在REPL内摆弄。
Oberon

您不允许输出菱形的尾随空格。
lirtosiast

1

Jelly,46个字节(无竞争)

“3ḅaė;œ»
Ɠ!
ÆRS
ɠQḲŒl
4Ḷ¤‘+¤ṖṚṭ×”*Fµ4Ḷṭ4ḶṚṖ¤F×⁶+⁸Y

在线尝试!(复制/粘贴每个代码段)

显然,限制并没有限制打高尔夫球:)当然,请只提供关于最后一个的建议。

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.