打印字符串而不共享字符


15

编辑:允许重复使用空格。

您的任务是用相同的语言编写n个程序(或函数或函数体,而不使用参数或函数名)。第k个程序应以小写标准英语(带有可选的尾随换行符)输出(基数)k。因此,第一个程序应输出one,第二个程序应输出,two依此类推twenty-one。对于具有两个部分的数字,应使用连字符()隔开。

但是您提交的程序中没有两个程序可以共享非空白字符或做有用工作的空白字符。例如,如果你的第一个程序就是"one",那么没有" o ne可以再次在其他程序中使用。

您可以在两个或多个程序中使用空格字符(空格,换行符和制表符),前提是它们仅用作分隔符或缩进,而不自己做任何事情。因此,您不能以Whitespace语言重用它们,也不能在多个程序中以字符串形式使用它们。

您只能使用可打印的ASCII字符,制表符和换行符(包括CR和LF)。每个程序必须至少包含1个字符。

您的分数是1 /程序大小^ 1.5的总和。最高分获胜。您可以使用以下堆栈片段(或CJam代码)来计算分数:

function updatescore(a){var l=a.value.split("\n"),s=0;for(var i=0;i<l.length;i++){var t=l[i].length;t-=t&&l[i][t-1]=="\r";if(t)s+=Math.pow(t,-1.5);}document.getElementById('result').textContent=s;}
<textarea id="input" placeholder="Put your code here, one per line." style="width:100%;height:150px;box-sizing:border-box" oninput="updatescore(this)" onpropertychange="updatescore(this)"></textarea><div>Your score: <span id="result">0</span></div>


一个更好的评分规则可能是1 /(程序大小+ c)^ 1.5的总和,其中c是一个常数。但是我认为现在进行更改可能为时已晚。
jimmy23013 2015年

我们可以添加一个乘数来获得更高的基数,因为这似乎是目标?我达到十二岁,比所有其他人都高,但仍然输了。
mbomb007

@ mbomb007抱歉,故意使Headsecks得分更低。但是如果Headsecks的得分与其他人差不多,我想Glypho会赢得太多(更不用说Lenguage)。
jimmy23013

我想在空白区域执行此操作:(
YoYoYonnY

1
@ mbomb007如果我再次问类似的问题,我可能会在分数中为程序大小添加一个小常数。但是在这个问题上改变是太武断了。
jimmy23013

Answers:


6

GS2,0.38669200758867045

从所有这些程序中删除空格,但删除三个空格,仅用于(咳嗽)可读性。gs2程序会崩溃(通过堆栈下溢),其中一个六个程序会崩溃,这很容易使它们成为quines

一个(3个字节)

one

两个(1384字节)

A?"A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0000000000000
000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000A?"A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"00000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000A?"A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000

三(92字节)

0a 21 2c 21 20 21 20 21 20 21 20 21 20 21 20 21
20 21 20 21 20 21 20 21 20 21 20 21 20 21 20 21
20 21 20 2f 20 0a 21 28 3c 0a 21 2c 21 20 21 20
21 20 21 20 2f 20 0a 21 28 3c 45 21 20 21 20 21
2f 20 0a 21 28 3c 0a 21 2c 21 20 2f 20 0a 21 28
3c 0a 21 2c 21 20 2f 20 0a 21 28 3c

很多有效的空白,所以这是一个十六进制转储。它的开头有一个换行符:


!,! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! / 
!(<
!,! ! ! ! / 
!(<E! ! !/ 
!(<
!,! / 
!(<
!,! / 
!(<

四(276字节)

f$f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$
31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$
31Mf$f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f
$f$31f$f$31Mf$f$f$31f$f$31f$f$31f$f$31f$f$31Mf$f$f$31f$f$31f
$f$31f$f$31f$f$31f$f$31f$f$31f$f$31M

五(178字节)

hd+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Khd+++&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Khd+++&&&&&&&&&&&&&&&&&&&&
&&&&&&&Khd+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&K

六个(3个字节)

six

我没有看到这个要求-我将仔细研究并解决中间解决方案。
林恩

我可以20通过7E09(制表符),0A(LF)和0D(CR)使用它,对吗?
林恩

是。编辑以明确允许CR。
jimmy23013

15是一个错字; 我已经去掉了。我现在修复三个
林恩

2
程序16本质上是语法错误,该错误将源代码转储到STDOUT并在STDERR上显示错误。共识似乎是可以的(很赞),但您应该在答案中提及它。
丹尼斯

13

果酱,0.24075

程式

BA1]100cf|
"two"
{hree}`W<7a.-
N)92+_9+_6+_2~+
S(84^I^U$F^X$G^Y$(
's'i'x

感谢@ user23013他建议,使用'6

输出,长度,分数,使用的字符

one    10  0.03162          01       AB         ]    c f         |  
two     5  0.08944  "                                     o  tw     
three  13  0.02133        -.     7  <        W     `a e h  r    { } 
four   15  0.01721      )+    2 6  9      N       _                ~
five   18  0.01309   $ (       4  8    FGI SU XY ^                  
six     6  0.06804    '                                  i  s  x

自己在CJam解释器中验证结果。


6

失眠,0.100688383057110116

只是为了开始。这是不可能的。在当前的评分方案下,任何可以one用5个或更少字符打印的语言都具有压倒性的优势。

一(8字节,0.04419417382415922)

uuyp>~p~

两个(9个字节,0.037037037037037035)

oeoojdoLj

三(21字节,0.010391328106475828)

*FFFFF
=
=z"
n=nnFzzB

四(23字节,0.009065844089438033)

)HGGGkGGGtGkGk<GGh$HGGt

4

头颈,0.044623631135793776

在这里产生

该语言是一种简单的BF替换,唯一重要的是字符值取模8。

不幸的是,较长的程序尽管能达到12分,但得分却更差!(如果我可以使用不可打印的ASCII和Unicode,我会变得更高。)

##%%%%%%%&##$%&#&%&%%%%%%%%%&

--------+--.+++,-..+++.--------.

5555555535563334566555555555555633333333336555555555555566

==;=====>;<=>>;;;;;;;;;>;;;;;;>===>

EECEEEEEFCDEFFCCCFCEFCCCCCCDEFFCCEFCCCDEFF

KKMMMMMMMMMNKKLMNKNMMMMMMMMMMNMKMMMNKLMNN

SSUUUUUUUUUVSSTUVSVSSSSSUVSSSTUVVSUUUVSTUVUVSSUVSSSTUVVSSSSSSSSSV

]][]]]]]^[\]^]^[[[[^]]^[^[[[[[[[[[[[[^

cceeeeeeefccdeffeeeeefcccccfeeeeeeeeef

mmmmmmmmkmmnkkklmnnkkkkmnkkklmnnkkkkkkkkkn

十一

uusuuuuuvstuvuvsssssssvuuuuuuuvsuuuvstuvuvssuvssstuvvsssssssssv

十二

}}}}}}}}{}}~{{{|}~~{{{~{}~{{{|}~~{{{{{{{~{{{{{{{{{{~{{}~{{{|}~~

您只能使用可打印的ASCII字符,制表符和换行符。
jimmy23013

@ user23013我做了多达我可以,我得到了12
mbomb007

2

///,0.19245008972987526

one

此答案的灵感来自@ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳的答案,他说

在当前的评分方案下,任何可以one用5个或更少字符打印的语言都具有压倒性的优势。


好的,评分算法似乎存在漏洞。打的好。
丹尼斯

好吧,这个问题在沙盒中放了这么长时间,只是为了获得更好的评分方法。它仍然没有工作......这也适用于PHP,ASP等
jimmy23013

0

SmileBASIC,.10062

“一”

?"one

“二”

PRINT MID$(@two,1,3)

我的其他答案更有趣,但是这个分数更高。

最长链的重要策略是使用更多字符保存唯一字符(例如,x - -x在程序2中使用以保存y + y程序3)。

计分系统的问题在于,它对2个短节目的得分要比3个长节目好,因此,如果使当前节目更长,则没有理由为以后的节目保存字符。

同样,它对单个短节目的重视程度高于较小的TOTAL大小。如果我换?,并PRINT在我的答案我可以节省1个字符,但我的成绩是原来的一半。

我认为最好仅基于程序的数量,将总大小作为决胜局。


3
我认为这两个程序都共享一个o...
JayCe
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.