输出文本“代码保龄球”


54

代码保龄球

Brunswick Bowling雇用您来创建一个简单的程序,Code Bowling在他们的监视器上输出文本。这家公司值得一分钱,您觉得可以骗他们一些的钱。

职位描述清楚地表明,他们按计分方式付款,并且您很有信心可以操纵自己的计分系统,从而从中获益,并从这些人那里获得最大的薪水支票。这样做将需要您将尽可能多的代码打包到程序/函数中,即使它们的计分系统旨在防止您这样做。

拿出您的存钱罐,让我们编码!


挑战

面临的挑战是简单地输出文本Code Bowling,使其与此处编写的内容完全一样,并获得最高分。(请参阅下面的评分系统部分)

开头和结尾的换行符(换行符)是可以接受的。

您的代码可以是整个程序,也可以是可执行函数。


规则

强制性:此挑战是使用代码收集:通用规则,修订版1.0.0;有关详细信息,请参见Meta。

  1. 字符:字节比率
    在代码保龄球中,字符计数比字节计数优先。显而易见的原因是,可以使用多字节unicode字符(例如🁴)代替单字节unicode字符来弄乱字节数,并使更多人知道谁用高字节unicode字符重命名最多的变量,而不是而不是最有策略地创建有意义的复杂代码的人。

  2. 变量/功能/对象名称
    所有变量名称(或对象指针,函数名称等)应为1个字符长。使用2个字符的变量名称的唯一可接受时间是在使用了所有可能的1个字符的变量之后。使用3个字符的变量名称的唯一可接受时间是在使用了所有可能的2个字符的变量之后。等等。

  3. 未使用的
    代码必须使用所有代码。意味着如果删除了任何单个字符(或不同的字符集),程序必须无法始终正确地完成任务。自然,如果没有程序的其余部分,该程序的子集将无法独自完成任务。

  4. 注释
    除非程序或功能以某种方式使用了注释,否则不允许对字符计数进行注释。


评分系统:

  Pangram挑战:

七巧板是每个字母至少使用一次的句子。(敏捷的棕色狐狸跳过了懒狗)。

这种挑战类型具有计分系统,其中完美的Pangram可以达到理论上的最高分数(尽管您不需要至少每个字符都使用一次。)此外,多次使用任何字符都将招致惩罚。这个挑战也扩展到了不仅仅是字母字符。

  评分标准:

  1. 使用的每个字符都会使您的得分提高1。
  2. 重复使用任何字母数字字符(az,AZ,0-9)将导致每次重复扣除3分(首次使用不会导致扣除)。
  3. 重复使用基本标点符号([!?.-,":';])-包括方括号-将导致每次重复扣除2分。
  4. 重复使用其他ASCII字符{`~@#$%^&*_+=|\/><}(包括花括号)将导致每次重复扣除4点。
  5. 使用空格,制表符和换行符将导致每次使用减少1分。也就是说,它们不计入角色总数。
  6. 上面未提及的字符(奇异字符)每次使用将导致扣1分。也就是说,它们不计入角色总数。

  计分工具:

一个自动计分的小工具已经创建,可以在这里找到


这是一个变体。得分最高的程序将获胜!(由于最高得分为94,因此,只要得分最高的人(如果可以达到的话)将被标记为接受的答案,但是其他人则可以继续保持乐趣)


37
我设法得到-75k的分数。如果这是最低分,我会做的很棒。
ATaco

1
@carusocomputing尝试戴颈巾。分数可能仍然很糟糕。另外,您不能真正使用BF,因为任何非命令都是注释,可以将其删除。
mbomb007 '17

1
使用Delimit会很有用,因为它实际上并不关心您使用什么字符,而只是关心一组字符的组合ASCII
MildlyMilquetoast

2
最短的代码将是应对这一挑战的决胜局!
Stewie Griffin

2
也许有人可以通过奖励其他94人来解决这一问题
masterX244

Answers:


36

草甘膦,94

源文件在CP437中编码。

␀␀!"☺☺#$☻♥♥☻♦♣♦♣%♠♠&•◘•◘'○○(◙♂◙♂♀♪♪♀♫☼♫☼►◄◄►↕↕)*‼¶¶‼§§+,▬↨↨▬↑↓↑↓→←→←∟∟-.↔▲▲↔/▼▼▼⌂Ç⌂Çüééüââ01ää23àååàçêçê4ëë5èïèïîî67ìÄÄì8ÅÅ9ÉÉ:;æÆÆæô<=ôöòòöûùûù>ÿÿÿÖÖ?@ÜÜAB¢££¢¥₧¥₧CƒƒDáíáíóóEFúññúѪѪGººHI¿¿J⌐¬⌐¬K½½½¼¼LM¡««¡N»»»░░OP▒▒QR▓││▓┤╡┤╡S╢╢T╖╕╖╕U╣╣V║╗║╗╝╜╜╝W╛╛╛┐X┐┐Y└└└┴┬┴┬├─├─Z┼┼┼╞╞[\╟╟]^╚╔╔╚╩╦╩╦_╠╠`═╬═╬╧╨╨╧╤╥╥╤a╙╙╙╘╘bc╒╒de╓╓fg╫╪╪╫┘┌┌┘█▄█▄▌hi▌▐j▐▐▀αα▀ßΓßΓπΣπΣkσσσµlµµτmnτΦΘΘΦΩδΩδo∞∞∞φpφφεεqr∩≡≡∩±±st≥≤≤≥u⌠⌠⌠⌡⌡vw÷xy÷≈°°≈∙∙z{·|}·√ⁿⁿ√~²²²

在线尝试!

说明

Glypho对于此类挑战非常有用,因为它根本不关心实际使用的字符。相反,它查看每个4个字符的块,并且所使用的命令由这四个字符构成的模式确定:

0000 n
0001 i
0010 >
0011 \
0012 1
0100 <
0101 d
0102 [
0110 +
0111 o
0112 *
0120 -
0121 ]
0122 !
0123 e

这意味着我们可以解决问题,然后在每个四重奏中用可打印字符填充唯一字符,并在所有重复字符中填充一些“奇异”字符,这些字符会被计分忽略。Glypho非常冗长,普通的手写解决方案包含足够的唯一字符以适合内部的所有94个可打印字符。实际上,我最终将它打高尔夫球直到精确到94,这样我才可以对重复的字符使用独特的奇异字符(希望这样可以减少程序的难度)。

上面程序的简写形式是:

11+d*d*d+d+1+1+dd1+o
d+11+d*d1+*1+-+do
11+d*d1+d**do
1+o
11+d*d*d+o
<o
ddo
11+d*d++o
111++d-<+ddo
<-+do
<1+1+o
1-+1-+o

每行打印一个字符。

我已使用Retina脚本使用将该脚本转换为Glypho 0123。然后,我只填写了字符以代替数字。

从理论上讲,如果有人设法简化速记程序,然后设法重新组合字符,从而显示正确的图案,则有可能进一步降低这种可能性,但是我不确定如何证明或反对这种可能性。如果有人设法从我的程序的子集中形成有效的解决方案,请告诉我,以便我可以删除答案,直到确定为止。在此之前,我必须假设这是有效的。


好东西!我现在接受这个,因为这94是最高分。其他所有人都可以随意提交答案以保持乐趣
艾伯特·伦肖

辛苦了,马丁!如果我能快几个小时的话...:D
mbomb007'3

@AlbertRenshaw也许决胜局应该是字节计数的?:D
mbomb007 '17

48

蟒蛇3,82 87 88

感谢@JonathanAllan +1分

print("g!#$%&'*n+,./012i34579;<l=>?@ADEwFGHIJKLoMNOPQRSBTUVWXYZ ^_`abchejkmqsuvdyz{|}~ \x6f       C"[::-8])

在线尝试!

没什么特别的,只是切片和跳过字符。字符串是反向的,因此您不能删除字符并打印原始字符串。


2
哇。这很好的。
马修·鲁

1
很好的答案,但是为什么要改组顺序?当然,HIJKLMN...除了每个第8个字符以外,按自然的顺序()进行操作(对您来说)是否更简单?
Stewie Griffin

@StewieGriffin会容易些,是的。我只是遍历了集合,并不真正在乎排序。
TidB

您为什么以其他奇怪的顺序填充其他字符?
mbomb007'3

2
您就像灵感一样TidB!我的新问题:)
Stewie Griffin

17

> <>92 94

是的,我做到了!

是带有十进制值17 的奇异字符\x11。打印结果后程序退出并出现错误(这是堆栈下溢)。我必须管理我仔细使用过的镜像和定向命令,因为我只能使用一次。

   >"vCoUV␑3`h]Z_X
       /a[f+
#$%&'r(!
.0456~8?
:;<=@9l)
ABDEFcGe
HIJKL*
MNOPQ7
RSTWYd
bgijk1
mnqst-
uwxyz2
{|}  ,
     \p^

在线尝试

核心程序:

   >"vCoUV␑3`h]Z_X
       /a[f+
     r !
     ~ ?
     9 )
     c e
     *
     7
     d
     1
     -
     2
     ,
     \p^

说明:

推入字符串vCoUV␑3`h]Z_X >(执行换行)。向下移动。反转堆叠并取出v

9c(12)。乘以得到108l)。推7。按d(13),减去1,除以2得到6。放在l(13,6)的(x,y)处,位于下方e。我可以用更短的时间完成此操作,但是这样做会加长,因此我有空间放置更多的ASCII字符。

向上移动到一个循环。用推送堆栈长度l。如果大于14,则输出字符,否则创建一个包含前10个元素的新堆栈,加15,然后立即反映执行,然后向上输出。这用于防止多余的空格并>在末尾打印,以及将看起来随意的字符串转换为需要打印的字符串。继续循环。

如果任何一行都较短(通过删除一个字符),则该程序将不再起作用,这是因为该程序的垂直部分不再对齐,或者是因为要打印的字符串不再正确。尝试从每行前面删除一个字符会改变堆栈深度和l放置位置,这也会引起问题。


94!真好!我没想到你会到达那里哈哈
Albert Renshaw

2
当我开始制作第一个版本时,我知道我可以重用一些版本。然后,我放弃了"l进行了大量工作。一旦我达到92,我确定必须有一种方法来删除最后一个o。不过,这需要一些努力。您可以通过修订历史告诉。
mbomb007 '17

16

八度,20 21 22 25 27 33

我到目前为止管理的最好的是

g=@()disp(horzcat([67 9583 -412],'e B',"nvkhmf"+!0));

这将创建一个f无需输入的匿名函数。你可以叫它f()。我想说最后的分号是必要的,以避免打印功能主体。

可以通过将eval和结合使用来改善这一点printf,但是我已经反复尝试并失败了。

通过阐明八度mod(x,256)在隐式将数字转换为字符时会执行操作的事实,这将一次使用所有数字。这意味着我们可以使用负数,也可以使用正常范围以外的数字32-126。以下数字i在转换为字符时均产生字母:... -2455 -2199 -1943 ... 105 361 ...'owling'我们使用"nvkhmf"并添加1 ,而不是最后使用。这将创建一个整数向量,这些向量隐式转换为字符。而不是1,我们使用!0(或not(false)。此外,我们使用"而不是'避免两个罚分。

我们需要找到得分最低的一组数字。Code Bowling当我们减去并加-10 * 256-10 * 256时,字符串结果为以下矩阵。

  -2493  -2449  -2460  -2459  -2528  -2494  -2449  -2441  -2452  -2455  -2450  -2457
  -2237  -2193  -2204  -2203  -2272  -2238  -2193  -2185  -2196  -2199  -2194  -2201
  -1981  -1937  -1948  -1947  -2016  -1982  -1937  -1929  -1940  -1943  -1938  -1945
  -1725  -1681  -1692  -1691  -1760  -1726  -1681  -1673  -1684  -1687  -1682  -1689
  -1469  -1425  -1436  -1435  -1504  -1470  -1425  -1417  -1428  -1431  -1426  -1433
  -1213  -1169  -1180  -1179  -1248  -1214  -1169  -1161  -1172  -1175  -1170  -1177
   -957   -913   -924   -923   -992   -958   -913   -905   -916   -919   -914   -921
   -701   -657   -668   -667   -736   -702   -657   -649   -660   -663   -658   -665
   -445   -401   -412   -411   -480   -446   -401   -393   -404   -407   -402   -409
   -189   -145   -156   -155   -224   -190   -145   -137   -148   -151   -146   -153
     67    111    100    101     32     66    111    119    108    105    110    103
    323    367    356    357    288    322    367    375    364    361    366    359
    579    623    612    613    544    578    623    631    620    617    622    615
    835    879    868    869    800    834    879    887    876    873    878    871
   1091   1135   1124   1125   1056   1090   1135   1143   1132   1129   1134   1127
   1347   1391   1380   1381   1312   1346   1391   1399   1388   1385   1390   1383
   1603   1647   1636   1637   1568   1602   1647   1655   1644   1641   1646   1639
   1859   1903   1892   1893   1824   1858   1903   1911   1900   1897   1902   1895
   2115   2159   2148   2149   2080   2114   2159   2167   2156   2153   2158   2151
   2371   2415   2404   2405   2336   2370   2415   2423   2412   2409   2414   2407
   2627   2671   2660   2661   2592   2626   2671   2679   2668   2665   2670   2663

因此,['',2627 2415 2148 1893 -2528 66 -1169 -1161 2668 105 -146 103]结果为ans = Code Bowling。然后的挑战是找到最大程度降低分数的数字和字符集。使用所有数字当然是好的,但是重复是不好的。由于所有数字都被使用,非数字都被使用了两次,因此这是最好的混合方式。另外,我们开始使用-,得出一点。

可以声称它可以减少到下面的行(31分),但是随后它将不再是“可执行功能”,因此将具有不同的功能。

disp(horzcat([67 9583 -412],'e B',"nvkhmf"+!0))

你也尝试function q();disp(...)过吗?除了i(),它们很好地不重叠。
桑契斯(Sanchises)'17

@Sanchises我可以检查一下。但是cot在字符串中horzcatnf字符串中会大大降低得分。但是,如果我horzcat以另一种方式删除并创建字符串,则可能会更好,但是我不能使用+!0其中任何一个。老实说,如果它增加分数,我会感到惊讶...它仅比当前答案长7个字符,除了我提到的那些字符之外,我还会得到7字节的罚款。
Stewie Griffin

1
是的,我不能轻易获得更高的分数function,但是后来我发现您可能已经尝试过了,我会浪费我的时间(相反,您知道我的时间花在了PPCG上)
Sanchises

12

QBasic,34岁

这是未格式化的代码(可以区分大小写)。您可以在QB64archive.org中运行它(尽管请注意,后者将在您键入时格式化代码)。我我已经遵守了所有规则。

CLS
PrINT "C
LOcatE 1, 2 : ? CHR$(957-846); "de Bowling

CLS是必要的:没有它,C不能保证在屏幕上,它会排队用的左上角进行打印ode Bowling。该LOcatE是必需的:没有它,ode Bowling将被打印在下面的行上C。我认为程序的任何子集(空格除外)都可以删除并保持相同的输出。


1
您可以共享指向在线口译员的链接吗?我不能在repl.it上运行它。我知道了Parse failed: Syntax error at 3:36: Token(Bowling)
Stewie Griffin

1
@StewieGriffin在几个选项中进行了编辑。
DLosc

1
@StewieGriffin,这利用了Microsoft Basic实现中的一个怪癖,如果字符串的结尾引号延伸到行尾,则该字符串的右引号是可选的。我希望大多数非Microsoft口译人员都会反对缺少的报价。
标记

显然QBasic对我来说具有很强的气味联想。
并不是查尔斯(Charles)

1
@DLosc闻起来像是我从中学到的书,就像我家里的计算机室长大。我不知道。就是LOCATE 1, 2这样做了
不是查尔斯(Charles)

12

C,27 29

感谢@ceilingcat + 2分!

f(){char q<:]="Code B\157wling";puts(q);%>

2
推荐char q<:]替代char q[]puts(q);%>取代puts(q);}
ceilingcat

建议:1.使用单独的函数输出字符串的每个段,然后在函数f中全部运行它们。2.使用结构使代码无理地变长的妙处
Matthew Roh

1
@MatthewRoh我想您可能会发现评分系统对这种处罚非常严厉
Albert Renshaw

1
@AlbertRenshaw这些是有图的
ceilingcat '17

14
哈哈,我第一次看到+2 points thanks to ...
Kritixi Lithos

9

Haskell得分21 38 46 47 21 70

putStr$toEnum(length"!#%&'*+,-./012345789;<=>?@ADGHIJKLMNOPQRTUVWXYZ[]^_`abcfjkqsvyz{|}~"):"ode B\x6Fwling"

在线尝试!这个想法是C通过构造一个长度为67的字符串(其中包含所有其他未使用的字符)并将此字符串的长度转换为字符来获得领先地位的。我以putStr$toEnum(length""):"ode B\x6Fwling"(产生结果的'\x6F'十六进制数)开头,并计算了程序中未包含的所有可打印ASCII字符:'\111''o'

!#%&'*+,-./012345789;<=>?@ACDGHIJKLMNOPQRTUVWXYZ[]^_`abcfjkqsvyz{|}~

顺便说一句,恰好剩下67个可打印的ASCII字符,它们可以放入字符串中,而C本身不能出现在字符串中,因为这样程序就可以简化为just putStr"Code B\x6Fwling"


先前的解决方案:(得分21)

f|x<-'C'=mapM putStr[(:)x"ode Bowling"]

定义一个f不接受任何输入并输出字符串的函数。在线尝试!



@Leo好抓!这种方法是否也适用于我95在字符串中加减的更新版本4621?(我现在没有时间自己检查它,但稍后再调查)
Laikoni

1
疑难杂症。花了我比预期更长的时间,看看结果是多么简单:)
Leo


8

94 岁的果冻

“!#"$&('*)+-/,13.0456:79<;>=@B?ADFHJLNCPRTEVXZ\G^IKMQ`SWbY[]d_acfhjegliknmprotquvxwy{z}¹|³⁵⁷~°⁹⁻”O%2s8UḄỌ

在线尝试!

105个独特字符,11个外来字符(“¹³⁵⁷°⁹⁻”ḄỌ)。

怎么样?

由8位反向ASCII形成字符串,其中每个位都使用字符的Unicode值的LSB进行编码。

“...”O%2s8UḄỌ - Main link: no arguments
“...”         - the string enclosed            !  #  "  $  &  (  '  *  )  +  -  /  ,  1  3  .  0  4  5  6  :  7  9  <  ;  >  =  @  B  ?  A  D  F  H  J  L  N  C  P  R  T  E  V  X  Z  \  G  ^  I  K  M  Q  `  S  W  b  Y  [  ]   d  _  a  c   f   h   j   e   g   l   i   k   n   m   p   r   o   t   q   u   v   x   w   y   {   z   }   ¹   |   ³    ⁵    ⁷   ~   °    ⁹    ⁻
     O        - cast to ordinal (vectorises) [33,35,34,36,38,40,39,42,41,43,45,47,44,49,51,46,48,52,53,54,58,55,57,60,59,62,61,64,66,63,65,68,70,72,74,76,78,67,80,82,84,69,86,88,90,92,71,94,73,75,77,81,96,83,87,98,89,91,93,100,95,97,99,102,104,106,101,103,108,105,107,110,109,112,114,111,116,113,117,118,120,119,121,123,122,125,185,124,179,8309,8311,126,176,8313,8315]
      %2      - mod 2 (vectorises)           [ 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1,  0, 1, 1, 1,  0,  0,  0,  1,  1,  0,  1,  1,  0,  1,  0,  0,  1,  0,  1,  1,  0,  0,  1,  1,  1,  0,  1,  1,  0,  1,   1,   1,  0,  0,   1,   1]
        s8    - split into chunks of 8       [[1,1,0,0,0,0,1,0], [1,1,1,1,0,1,1,0], [0,0,1,0,0,1,1,0], [1,0,1,0,0,1,1,0], [0,0,0,0,0,1,0,0], [0,1,0,0,0,0,1,0], [1,1,1,1,0,1,1,0], [1,1,1,0,1,1,1,0], [0,0,1,1,0,1,1,0], [1,0,0,1,0,1,1,0], [0,1,1,1,0,1,1,0], [1,1,1,0,0,1,1]]
          U   - upend (vectorises)           [[0,1,0,0,0,0,1,1], [0,1,1,0,1,1,1,1], [0,1,1,0,0,1,0,0], [0,1,1,0,0,1,0,1], [0,0,1,0,0,0,0,0], [0,1,0,0,0,0,1,0], [0,1,1,0,1,1,1,1], [0,1,1,1,0,1,1,1], [0,1,1,0,1,1,0,0], [0,1,1,0,1,0,0,1], [0,1,1,0,1,1,1,0], [1,1,0,0,1,1,1]]
           Ḅ  - binary to int (vectorises)   [67, 111, 100, 101, 32, 66, 111, 119, 108, 105, 110, 103]
            Ọ - to character (vectorises)    ['C', 'o', 'd', 'e', ' ', 'B', 'o', 'w', 'l', 'i', 'n', 'g']
              - implicit print               Code Bowling

1
果冻比别人长,这怎么可能?
Christopher

1
@DownChristopher实际上比python答案短。python的答案虽然有重复。
fəˈnɛtɪk

@DownChristopher我可以发现讽刺吗?
乔纳森·艾伦,

@JonathanAllan 不,我仍然觉得果冻很长很有趣
Christopher

6

罗达(33)

{["ode B\x6fwling"]|push chr(3*4+57-2).._}

在线尝试!

我试图遵守所有规则。它的工作原理是先将字符串推ode Bowling!到流中,然后C在前面插入= 3 * 4 + 57-2。


6

红衣主教20

23个非空格字符
%#> / NI“ CodeB8 ^ o)wl,ing

-3表示重复的“ o”

   I
 >\/N
%# "CodeB
 8^o
 ) w
   l
 , i
   n
   g

指针路径:

步骤1:
在%向右创建指针

第2步:
指针在#处分割以向上,向右和向下(P1,P2,P3)

步骤3
P1向右发送>>
P2向右发送
P3设置在8等待3个步骤

步骤4:
P1由\向下反映。\更改为/
P2通过“
P3 设置为打印模式等待8点2刻

步骤5:
P1朝下
P2打印C
P3等待8滴答

第6步:
按^
P2 发送P1打印o
P3在继续处等待完成,从中获取ASCII值“”(32)

步骤7: P1朝上
P2打印d
P3朝下

第8步: P1由\正确反映,已更改为/
P2打印e
P3从操作打印ASCII值= 32的字符

步骤9:
由/反射的P1更改为\
P2打印B
P3到达视场终点并停止

步骤10:
P1被I
P2 反射到达视野尽头并停止

步骤11:
P1由/正确反映,已更改为\。更改回/

步骤12:
P1向左反射N

步骤13:
P1反映为/

步骤14:
P1通过“设置为打印模式

步骤15:
P1打印o

步骤16:
P1打印w

步骤17:
P1打印l

步骤18:
P1打印i

步骤19:
P1打印n

步骤20:
P1打印g

步骤21:
P1到达字段结尾并停止。

在线尝试


5

C,73

感谢@Laikoni!

F(){printf("Code B\157wli%cg",48+strlen("!#$&'*-../2369:<=>?@ADEGHIJKLMNOPQRSTUVWXYZ[]^_`abhjkmquvxyz|~"));}

在线尝试!

C, 31   33  35

F(){printf("Code B\157wli%cg",96|0xD+3*4/8);}

感谢@ceilingcat和@DLosc多加两点,并感谢@ØrjanJohansen再多两点!

在线尝试!


1
@ceilingcat然后可以删除8-并仍然具有有效的代码。0xA-4+8应该可以,但是。
DLosc

1
0xA+32/8工作吗?(也就是说,没有可移动的东西。)
ØrjanJohansen

@ØrjanJohansen我认为是的。无+32+3+2+3/8+2/8/8+8产生右输出。谢谢!
Steadybox

哦,还是0xD+4*8/32。不用等待,那会缩短为0xD+4/3不是。
与Orjan约翰森

1
如果无法通过任何方式简化,则使用与Haskell答案相同的方法获得74分:在线尝试!
Laikoni '18

3

批量,19个字符

@echO(Cod%TMP:~5,1% Bowling

从Windows Vista TMP开始,尽管如此C:\Users\,因此%TMP:~5,1%是冗长的书写方式e,尽管要求加倍加倍%-4。


3

操脑:-204

++++[++++>---<]>.+[--->+<]>+++.-----------.+.--[--->+<]>-.+[->++<]>.-[--->+<]>++++.++++++++.-----------.---.+++++.-------.

好吧,成绩很差,但是写起来很有趣。

  • 长122个字符
  • 重复的数字:-0()
  • 重复标点符号:-134(-[---] .-----------..-- [---]-。[-] .- [---] ..-- ---------.---..-------。)
  • 重复其他:-192(+++++++> +> + <> ++++> + <> +> ++ <>> + <> +++++++++++++++ ++++)
  • 空格字符:-0()
  • 外来字符:-0()

Brainfuck会赢得任何 PPCG挑战吗?; P
Draco18s

@ Draco18s可能不是哈哈哈哭了。
Haydn Dias

1
“有趣的写作”,您是说在文本生成器中键入“ Code Bowling” ?
Jo King

3

爪哇8,2 3 5 13 17 18 19 20 21 24 77 78分

+53得分(24→77)感谢@Laikoni

v->(char)"!#$%&'*,/0234689:;<=?@ADEFGHIJKLMNOPQRSTUVWXYZ[]^_`bfjkmpqsuxyz{|}~".length()+"\157de Bowling"

104个字符长
-重复的数字:-15(helng
-重复的标点符号:-10("()""
-重复的其他ASCII:无
-空格字符:-1
分数:78

在线尝试。


旧的24个字节的答案:

v->"C\157de Bowlin"+(char)103;

30个字符长
-重复的数字:-3(1
-重复的标点符号:-2("
-重复的其他ASCII:无
-空格字符:-1
分数:24

在线尝试。


在文本中使用八进制转义符会使您的得分提高6,而不是Unicode转义符得到的得分提高2(尽管两者都更糟)。同样,连接第一个或最后一个字符将使您的得分提高1。最后,您可以认为使用lambda而不是命名函数可能会更好。
尼尔

@Neil Weird,Object x(){return"C\157de Bowling";}几个小时前我已经提出了17分。有任何lambda。我可以用lambda添加Java 8答案。
凯文·克鲁伊森

抱歉,我没有注意到7。(但不要忘记串联。)
尼尔(Neil

1
使用与Haskell答案相同的方法,该版本的评分为77:在线试用!
Laikoni '18

@Laikoni谢谢!+53的分数感谢您。而且,由于Java的8答案是没有尾随分号通常回答,我可能会删除尾随分号和更换重复,,,;另一+1。有趣的是,使用剩下的所有可用可打印ASCII的字符串,对于char-code来说确实是97个字符C。:)
Kevin Cruijssen


2

邪恶的 -81

比Brainfuck好!

aeeaeuwkaaeeuwygaeaeclaaxjlwalusbdgueuewguwpweewpuuuwuuuwpuweew

说明

aeeaeuw //Write 'C'
k       //Set P[0] to 'C'
aaeeuw  //Write 'O'
y       //Set W[0] to 'O'
gaeae   //Set Accumulator to 'D'
claa    //Create new Wheel cell at index 0, swap with Accumulator, add 2
xj      //Set alternate marker mode and drop marker
lwa     //Write value of W[0], add 1
lu      //Put it back, subtract 1 from Accumulator
sb      //Go to 'j' if Accumulator != 0
d       //Delete W[0]
        //The above loop writes 'D' and 'E'
gueuew  //Write ' '
guw     //Write 'B'
pw      //Write 'o'
eew     //Write 'w'
puuuw   //Write 'l'
uuuw    //Write 'i'
puw     //Write 'n'
eew     //Write 'g'

提交是因为没有人在邪恶中做任何事情,但这很有趣。

得分:

长度= 63

a*8  = -24
e*12 = -36
g*2  = -6
l*2  = -6
p*2  = -6
u*12  = -36
w*10  = -30

在线尝试!

编辑:TiO似乎不正确地处理了新的Wheel细胞的创建和删除-我已经提交了关于该主题的错误报告。它不能在那里正常运行,但是我在自己的解释器上运行它,并且可以运行,您可以信任我,因此我不必担心;)


2

的Perl:29,33

$_=OWLING;printf%s,"C\157de".chr(30+8/4).B.lc

得分:

- 46 characters long
- repeated alnum:       -6 (rc)
- repeated punctuation: -6 ("..)
- repeated other:       -0 ()
- whitespace characters:  -1 (
)
- exotic characters:  -0 ()

Total score: 33

2

05AB1E,94点

”X1234bcde5fghijk68l9<mn>,o.p|q\/{})r(_-+s=tu*vwxyzAB&YDEFG^HI%$ZK#L@!MNO~PQR`ST':UVW[0];"”€a7ôJCç€?

在线尝试!


- 100 characters long
- repeated alnum:       -0 ()
- repeated punctuation: -0 ()
- repeated other:       -0 ()
- whitespace characters:  -0 ()
- exotic characters:  -6 (””€ôç€)

Total score: 94

基本转换(代码保龄球的二进制ASCII):

['1000011', '1101111', '1100100', '1100101', '0100000', '1000010', '1101111', '1110111', '1101100', '1101001', '1101110', '1100111']

将其转换为1和0的字符串,然后将每个1替换为字母中的字母,并将每个0替换为空格字符,符号或数字。

”X1234bcde5fghijk68l9<mn>,o.p|q\/{})r(_-+s=tu*vwxyzAB&YDEFG^HI%$ZK#L@!MNO~PQR`ST':UVW[0];"”

是字符串,其中1是字母,0是符号,数字或其他任何东西。然后,我们遍历所有字母,将1推为字母0,将非字母推为0。然后,我们分成7组,转换回ASCII并打印每个字符。


2

T-SQL,65 18 32!点数

PRINT char(78-9605*43%12) + 'ode Bowling'

受到Dlosc QBasic答案中的技巧的启发,我找到了一种方法,其中包括所有10位数字和大多数数学运算符(%余数/模,仅丢失/),主要是通过反复试验得出的。我不认为有什么办法去除数字/符号的任意组合,以获得67,但欢迎您尝试。

第2版​​(18分,琐碎):

DECLARE @ char(12)='Code Bowling'PRINT @

分数不是很高,但这是我的第一个版本简化为的版本(感谢MickyT)。我尝试过的所有其他操作(对hex64进行编码和解码,从字符串中挑选单个元素,转换ASCII值等)都具有过多的重复字符(尤其是ECR和符号(),@),使它变成了负数。

版本1(65分,无效):

DECLARE @ char(123)=
'Code Bowling FGHJKMOQSUVWXYZbjkmpqsuvxyz045789 [!?.-":;]{`~#$%^&*_+|\><}'
PRINT left(@,LEN(@)/6)

我使用字符串的长度来确定从左侧使用多少个字符,因此从字符串中删除任何单个字符都会将整数除法结果降至11,仅输出Code Bowlin


不能确定,但​​是我认为可以将其简化为DECLARE @ char(12)='Code Bowling'PRINT @规则。
MickyT

@MickyT可以,这会使我的答案无效吗?聊天中的某人说,它只需要承受删除单个随机字符,而不能删除任意长的部分,这是不正确的吗?
BradC

我暂时将其保留在此处,看到t-SQL答案总是很好
MickyT

@MickyT我将保留它,但是将分数划掉。否则,我能做的最好的就是
微不足道的

2

;#,得分-1163,无竞争

我认为即使可以竞争也不会有太多竞争。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#

在线尝试!注意:TIO没有;#解释器,只有;#+。


1

CJam得分47

"'#?GyQ2wE(s6&␟JI!gF$u*Aq;0p4BvOKkHLhM"3/{:i~-z+c}%

希望这没有问题...

使用一个外来字符(单位分隔符,ASCII 31,由表示)和一个重复的字符(")。我认为它可以做得更长一些,但是我现在将其保留。

在线尝试!

该程序通过获取该长字符串并将其拆分为length-3个子字符串来工作。然后将每个子字符串映射到块,该块将其字符转换为其ASCII值,将值转储到堆栈中,取后两个值的绝对差,将结果与第一个相加,然后将最终结果转换回ASCII字符。


1

CJam,得分93

"g!#$&'()n*+/0134i5689:;<l=>?@ADEwFGHIJKLoMNOPQRSBTUVWXYZ [\]^_`aebcfhjkmdqrstuvxpyz{|}  C"7~%2,.-

在线尝试

灵感来自TidB的Python答案
不知道是否有办法避免重复双引号。

说明:

该字符串每8个字符包含一个反向的“ Cpde Bowling”。
7~%提取“ Cpde Bowling”(7~= -8
2,.-减少p字符(2,= [0 1]


@Laikoni,如果您是说我违反了未使用的代码规则,则应立即修复
aditsu

@Laikoni是的,但是如果您删除他的代码中的任何单个字符,它就无法正常工作,因此,因为使用了所有代码,所以它是有效的。
Magic Octopus Urn

@carusocomputing规则清楚地提到,“如果删除了任何单个字符(或不同的字符集),则该代码不起作用。”,所以我认为您的解释不成立。无论如何,aditsu已经解决了这个问题,所以现在一切都很好。
Laikoni

1

PHP,33分

这是很难做到的。

将来可能会提高分数。

<?echo IHASZODECG9F^"
'%6z\r+2/.W!";

假定换行符是Linux风格的换行符!Windows风格和Old-Mac风格无法正常工作。


1

红宝石,75岁

大约是Python答案的一部分,但是Ruby没有很酷的步进功能,所以我gsub改用了。我还决定通过将短语扔进Google Translate来与异国情调的人物玩一点

在线尝试!

print"Cachjkmq\x6fvyzADEFdGHIJKLMeNOPQRST UVWXYZ0B234589[o!?-:;]`w~@\#$%^&l*_+=|><i コードゴルフn 代碼保齡球 gκωδικός".gsub /(.).{7}/,'\1'

1

USML,12或9点(非竞争)

"Code\tBowling'

在线尝试!

这个答案通过滥用HTML呈现方式而有些作弊。实际创建的字符串是"Code\tBowling "。重复“ o”字符会丢失点数。

对于一个愚蠢的答案:

"Code Bowling

USML仍处于开发初期,尚无法进一步扩大程序的大小。


USML尚处于发展初期,尚无法进一步增加程序的大小。 ” 那10分呢"Code&'Bowling(*注意:换&行,不能让我在注释中键入)
艾伯特·伦肖

您还可以在任何字母的前面添加反斜杠``,由于编译器会忽略它或将字符转义为自身,因此它仍将输出相同的字符串。现在,(竞争性)分数达到11!
艾伯特·伦肖

然后,您可以s在下一行中添加一个换行符和一个小写字母(得到的子字符串为空,因此根本不会更改输出),从而使您的竞争得分最高为12,与非竞争得分相同,但实际有效提交:D
Albert Renshaw

实际上,这是USML中的16点答案,由于要在注释中键入多行代码非常困难,因此我将在hastebin上发布:hastebin.com/icuguviyax.tex
Albert Renshaw

我是个白痴,忘记了挑战的规则,上面的代码中的一部分仍然可以完成挑战,使我的回答失去资格;哎呀!
艾伯特·伦肖

1

库比克斯,85

Codeha1spqumtr;$"gnilwoB"Sv"ADEFH%IJK2f!OPUzQ0V3XY&*[-|L:]\T`~#x>MR56cGk'?W<()b4j}.{Z_^/978@

在线尝试!

用不重要的字符替换为。

        C o d e
        . . . .
        . . u . 
        . . ; . 
" g n i l w o B " S v " . . . .
. . . . . . . ! . . U . . . . .
. . . . . . . L . . \ . . . . .
> . R . . . . . . . W < . . . .
        . . . {
        . . ^ /
        . . . @
        . . . .

我认为我已经使路径脆弱,以至于删除字符会严重破坏它。

观看它运行

- 92 characters long
- repeated alnum:       -3 (o)
- repeated punctuation: -4 ("")
- repeated other:       -0 ()
- whitespace characters:  -0 ()
- exotic characters:  -0 ()

Total score: 85

0

VB.net,68岁

cONSOLE.WRITE("Code BowlingADEFGHJKQUVXYZfhjkmpqyz`!@#$%^&*9876543~][{}\|';:<>?+=-_".subStrinG(0,12))

利用VB的不区分大小写和不需要“系统”的功能进行快速测试。


1
我不知道VB.net,但是这不能减少到cONSOLE.WRITE("Code Bowling")吗?
Laikoni

1
是的,可以。根据帖子,:必须使用所有代码。意味着如果删除了任何单个字符(或不同的字符集),程序必须无法始终正确地完成任务。自然,如果没有程序的其余部分,该程序的子集将无法独自完成任务。“我相信分数应该是
17。– charliefox2

@ charliefox2谢谢。我没有读过-一定很兴奋再次使用VB!
chrixbittinx

1
嘿,17仍然压低我的分数-81!
charliefox2

0

壳牌:得分17

#!/bin/bash
echo "CODE BoWLING" | tr D-X d-x
  • 长44个字符
  • 重复的数值:-12(bhoD)
  • 重复标点:-4(“-)
  • 重复其他:-4(/)
  • 空格字符:-7()
  • 外来字符:-0()

总分:17


0

加速!171个字符

119
Write _-52
Write _-8
Count i while i-2 {
	Write _-19+i
}
32
Write _
_+34
Write _
_+45
Write _
_+8
Write _
_-11
Write _
Count i while i-2 {
	Write 105+i*5
}
_-5
Write _

在线尝试!

加速!由于必须使用空格并且循环代价高昂,因此可以很好地应对这一挑战。我利用了的 umulator这里,但不佳,增加字符。这是该页面的简要概述:

Accumulator 任何独立存在的表达式都会被求值并分配给累加器(可通过以下方式访问 _)。因此,例如3是将累加器设置为3的语句;_ + 1使累加器递增;_ * N读取一个字符,并将累加器与其字符代码相乘。(N得到输入)

Write <charcode> 将具有给定ASCII / Unicode值的单个字符输出到stdout。字符代码可以是任何表达式。

至少对于高尔夫而言,Acc中的循环很痛苦。它们需要大括号,并且所有空格都是必需的。否则,这很不言自明。


这是保龄球的挑战,而不是打高尔夫球的挑战,因此您应该最大化得分。另外,它的得分在其他方面是不寻常的。使用上面的计分工具,您的代码将获得负分。
与Orjan约翰森

1
@ØrjanJohansen看起来好像他们正在尝试使分数最高(由于“我在这里使用了Acc累加器,但是很差,所以增加了字符数”),但是他们只是没有正确地给它打分。
LyricLy

@ØrjanJohansen啊,是的,我似乎完全错过了得分部分。我将更新
FantaC
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.