难道你杀死了贾伯沃克吗?


37

您的任务是输出确切的字符串

The Jabberwocky

无需输入。输入和输出的常规规则适用,因此允许使用功能和程序。

当然有一个陷阱,没有陷阱就不会很有趣。您的程序在去除非字母字符时,必须开始写诗《 Jabberwocky》(不区分大小写)。要开始诗歌,它必须是诗歌的连续子串,从开头开始。空字符串很好(尽管您可能得分不高)。

这是供参考的文本:

twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebewarethejabberwockmysonthejawsthatbitetheclawsthatcatchbewarethejubjubbirdandshunthefrumiousbandersnatchhetookhisvorpalswordinhandlongtimethemanxomefoehesoughtsorestedhebythetumtumtreeandstoodawhileinthoughtandasinuffishthoughthestoodthejabberwockwitheyesofflamecamewhifflingthroughthetulgeywoodandburbledasitcameonetwoonetwoandthroughandthroughthevorpalbladewentsnickersnackheleftitdeadandwithitsheadhewentgalumphingbackandhastthouslainthejabberwockcometomyarmsmybeamishboyofrabjousdaycalloohcallayhechortledinhisjoytwasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabe

是一个可以用来测试此属性的程序。

如果用尽了诗歌,则不得使用任何其他字母字符。

字母字符的字符a- zA- Z这里是完整列表:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

计分

您的程序将以使用的非字母字节数来得分,而少则更好。

是一个为答案评分的Haskell程序。(假设输入有效)

范例程序

以下程序将有效:

twas&*brilliga77812nd Thesli thyt Oves didgy reand Gim bleinth ewab eal lmims ywe""""""""
ret h eb or o g o ve sa n dthemomerAthsoutgrabebewaretheJABBERWOCKmysonthe)(*)()((*98980908(()*(jawsthatbit

简化为字母字符时,它是:

twasbrilligandTheslithytOvesdidgyreandGimbleinthewabeallmimsyweretheb orogovesandthemomerAthsoutgrabebewaretheJABBERWOCKmysonthejawsthatbit

匹配诗的第一位(不区分大小写)。

该程序将获得59分,因为它包含以下非字母字符:

&*77812           """"""""
          )(*)()((*98980908(()*(

6
“开诗”是什么意思?
帕维尔

7
在没有字母的语言中,这样做很简单。
NoOneIsHere18年

5
我内心的学童有义务提醒您,这首诗的名字是Jabberwocky(没有文章),而野兽的名字是the Jabberwock(没有-y)。当然,您现在不能更改所需的输出,但是……
DLosc

6
为什么要关闭这么多票还不清楚?“这是您可以用来测试此属性的程序。” 部分完全明确地确定有效标准。
user202729

3
@JonathanAllan他们无法理解该问题并不一定意味着该问题尚不清楚...
user202729

Answers:


42

oo CODE,得分0

感谢Dennis为Brainfuck代码打高尔夫球。

TwASbRIlLIgAnDthEsliTHyTOvEsdiDgyreaNdgImbleinthEwaBeaLlmimSywEreThEBoroGoveSAndTheMOmERaTHSoutGRabEbeWArEthEjaBbeRWockMYsONtHEJawsTHaTBiTEThecLawSthATcaTChBeWAReTHeJuBJuBBiRDAndsHUNtHeFRuMIoUSbANdERSnatchheTooKHisvORpaLswORdinhAndLonGtiMetHEmanXomEFoEHeSOUg

在线尝试!

对于这个挑战,我有个坏消息... :(

oO CODE只是Brainfuck的二进制编码,它对每个位使用字母的大小写。是的,因为这首诗足够长(或者输出足够短)以覆盖一个Brainfuck程序进行打印The Jabberwocky(实际上并没有努力打高尔夫球),所以这成为了一个微不足道的最佳答案。



@JoKing 在线尝试!(由BF-Crunch生成)
丹尼斯

“坏消息”……是的,这很糟糕。我预测Unary将获得0个字节,规则已更改,并且仍有0个提交。
user202729

5
我不认为这是个坏消息。这对于用其他语言打高尔夫球的乐趣有零影响。
林恩

22

C,得分 104   79  74

感谢@gastropner将得分降低到79,并感谢@ wizzwizz4将得分进一步降低到74!

*t,w;a(s,b,rilligand){*(t//he
=s++)="lithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebewareThe Jabberwock\0mysonthejawsthat"[b++]?//i
:121;*t>12e1?*++t//hecl
=0:a//wsthatcatchbewarethejubjubbirdandshunthefrumiou
(s,b);}an;der(s,n){a(//tchhetookhi
s,88);}

在线尝试!



2
不会//abcdefgh\n少于1个字符/*abcdefgh*/吗?
wizzwizz4

@ wizzwizz4是的,它将。谢谢!
Steadybox

20

裂变2,得分3

twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebewaRe"The Jabberwock"mysonthejawsthatbitetheclawsthatcatchbewarethejubjubbirdandshunthefrumiousbandersnatchhetookhisvorpalswordinhandlongtimethemanxomefoehesoughtsorestedhebythetumtumtreeandstoodawhileinthoughtandasinuffishthoughthestoodthejabberwockwitheyesofflamecamewhifflingthroughthetulgeywoodandburbledasitcameonetwoonetwoandthroughandthroughthevorpalbladewentsnickersnackheleftitdeadandwithitsheadhewentgalumphingbackandhastthouslainthejabberwockcometomyarmsmybeamishboyO

在线尝试!

说明

我们可以忽略大多数小写字母,它们只是将原子的能量设置为其代码点。

...Re"The Jabberwock"my...oyO

大写字母R是程序的入口点,因为它会创建一个向右移动的原子。正如我所说,我们可以忽略e。然后"切换字符串模式,该模式仅将遇到的所有字符输出到STDOUT,这给了我们The Jabberwock。那只剩下y。我们可以使用y立即在中出现的那个y,但是随后我们不得不在打印它(!)时浪费至少一个非字母字节,而在终止程序时可能要浪费另一个字节。

相反,我们耐心地等待在诗歌中出现y之前o。因为这使我们可以使用O它打印字符破坏原子,从而终止程序。这样,我们唯一需要的非字母字符是空格和两个引号。


非常非常令人印象深刻。

14

爱丽丝,得分7

"T/was"bri@lligandtheslithytovesdidgyreandgimbleinthewabeallmimsywe
rethe borogovesandthemomerathsoutgrabebewarethejabberwockmysonthejawsthatbitetheclawsthatcatchbewarethejubjubbirdandshunthefrumiousbandersnatchhetookhisvorpalswordinhandlongtimethemanxomefoehesoughtsorestedhebythetumtumtreeandstoodawhileinthoughtandasinuffishthoughthestoodthejabberwockwitheyesofflamecamewhifflingthroughthetulgeywoodandburbledasitcameonetwoonetwoandthroughandthroughthevorpalbl
adewentsn

在线尝试!

/使斜的IP移动和反弹的边缘,所以实际执行的指令"The "ono@。的n命令(序模式)推字符串“Jabberwocky”如果堆栈的顶部是空的,并且o输出该堆栈的顶部。


1
很好的答案!
乔纳森·艾伦,

3
正确的工作工具。
罗伯特·弗雷泽

不错,我尝试了几件事,但没有找到得分比这更好的布局。
马丁·恩德

13

果冻,得分 6  4

twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathSOUTGRABEBEWARE“The Jabberwock”m”y

完整的程序会打印结果
(作为单子链接,它将打印The Jabberwock为副作用并返回y

将字符插入“ ””到大小写变化的诗歌前缀中。

之所以有效,是因为:

  1. 最后hSOUTGRABEBEWARE“The Jabberwock”m”y(至少在写作的时候!)一个未定义的原子,这使得所有成为一个新的链接,需要的默认输入0并执行一些一元函数SOUTGRABEBEWARE,其产量1(见下文)。

  2. 1“The Jabberwock”m然后以切片大小对进行m模切片,产生。"The Jabberwock"1"The Jabberwock"

  3. 尾随”y是一条新的前导常量链,因此Jelly会打印该字符列表,然后产生出character y,并且由于它现在是程序的结尾,因此将其打印出来。

 implicit input = 0
S sum             0
O cast to ordinal 0
U upend           [0]
T truthy indices  []
G group           []
R range           []
A absolute value  []
B to-binary       []
E all-equal?      1
B to-binary       [1]
E all-equal?      1
W wrap            [1]
A absolute value  [1]
R range           [[1]]
E all-equal?      1

前6个字节:

twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware
“The Jabberwock”m1“y

在线尝试!

六个非诗歌字符是换行符加“ ”1“


替代6s:

“T“wasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebewaret“he Jabberwock”m2“y

twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebewaret
“The Jabberwockmy”ṪṭṖ

没有,第一个程序是否无效 m1“y?它仍然打印The Jabberwock并从一首诗的子集开始
dylnan

1
不,m1“y(或可能是m1”y)是必需的,因为我们必须打印The Jabberwocky,而不是The Jabberwock
乔纳森·艾伦,

7

木炭,得分3

twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware⎚The Jabberwock⌈my

在线尝试!

插入了三个字符: ⎚ ⌈

...也适用于整首诗

怎么样?

twas ... ware⎚The Jabberwock⌈my - no input
twas ... ware                    - print this text     >  twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware
             ⎚                  - clear the screen    >
               The Jabberwock    - print this text     > The Jabberwock
                             ⌈   - (print) maximum of:
                              my -   this text         > The Jabberwocky

5

红宝石-p),得分12

$_=#twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware
'The Jabberwock'+#m
?y

在线尝试!

滥用所有评论!

带有-p标记,ruby将打印存储在中的任何内容$_。需要任何输入的一行。


我认为您不能-p在这里使用,因为需要输入行。“您的任务是The Jabberwocky不输入就输出确切的字符串。”
benj2240 '18

@ benj2240 -p是命令行标志,而不是输入。
Xcoder先生18年

2
@ benj2240 通过meta concencus接受不需要输入的空输入。这需要一个空行。
帕维尔

@Pavel我明白了,谢谢
benj2240'3

5

木炭,得分:5 4

twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware⎚The Jabberwock¿m¦y

在线尝试!编辑:由于仅@ASCII,节省了1个字节。说明:转换为以下详细代码:

Print("twas...beware");
Clear();
Print("The Jabberwock");
if ("m") Print("y");


@JonathanAllan固定!
尼尔

4

得分5

twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware"The Jabberwock"m"y"

在线尝试!


4

> <>,得分:13 12

\twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware
\"The Jabberwockmy"$~\sonthejawsthatbitetheclawsthatcatchbewarethejubjubbirdandshunthefrumiousbandersnatchhetookhisvorpalswordinhandlongtimethemanxomefoehesoughtsorestedhebythetumtumtreeandstoodawhileinthoughtandasinuffishthoughthestoodthejabberwockwitheyeso
fflamecamewhifflingth>ro<

在线尝试!

验证评分

立即重定向到第二行,这会将“ Jabberwockmy”推回堆栈。$~弹出多余的部分m>ro<打印整个堆栈,然后将其反转。


3

视网膜0.8.2,得分:21 20 18 16 13 8 6

|twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware
The Jabberwock0$*my

在线尝试!编辑:由于@MartinEnder,得分减少了2。


您可以这样得分6:tio.run/…,然后通过切换到Retina 1.0(并使用*代替$*)获得5分。
Martin Ender


2

亚巴斯奇(13)

感谢@Pavel的Ruby解答!

#twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware
?"The Jabberwock";//m
?"y"

在线尝试!


我的得分是20,我想您忘了换行了。
帕维尔

是的,其他答案的分数也存在问题。

刚一说明:Yabasic可在尝试使用在线,你应该考虑加入一个链接到您的TIO的解决方案,如这一个
泰勒斯科特

@TaylorScott我怎么不能注意到这一点!固定。

我认为您在第一行的末尾还有一个额外的“ the”。
18Me21年

2

VBA,得分5

在立即窗口中运行:

?twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware"The Jabberwock"m"y

这个怎么运作:

? -这将输出打印为字符串

--

twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware -如果没有明确声明,则将其视为空字符串

--

"The Jabberwock"-字符串。当您将2个变量/字符串彼此相邻放置时,VBA将自动将它们串联在一起。(2个非可变字符串将需要一个空格,以便不添加双引号)

--

m -另一个隐式空字符串,自动串联

--

"y-另一个字符串。保持打开状态,“即时窗口”在碰到行尾时将自动关闭此窗口-再次自动串联

--

1个问号,1个空格和3个双引号。VBA将此视为?"" & "The Jabberwock" & "" & "y"?"The Jabberwocky"


2

哈斯克尔(12)

twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware="The Jabberwock"++{-m-}"y"

在线尝试!

定义一个零参数函数,twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware :: String其输出为"The Jabberwocky"


2

Java(OpenJDK 9),得分11

twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware->"The Jabberwock"+//m
"y"

在线尝试!

学分


1
通过更改()t(未使用的Voidnull参数)并t从注释中删除开头来获得-2分。
凯文·克鲁伊森

2
@KevinCruijssen感谢您的见解。:-)但是,关于<s>16</s> 14我,我还是希望像在任何StackExchange网络上一样,提供最终答案。更改本身列在修订版页面中,使每个人都可以轻松查看实际更改以及答案随时间的变化,而不是将所有过去和当前信息放在一个大的不可读的帖子中。
奥利维尔·格雷戈尔

好的,我很好。:)编辑主要是为了将“字节”修复为“得分”。
凯文·克鲁伊森

1
@KevinCruijssen的确,我看到了您对学分的更改,我们对此表示欢迎。在我之前的评论中,我仅指标题。我什在该主题上创建了一个元帖子。;-)
OlivierGrégoire18年

1
既然您已经删除了第一行的注释,就不再需要换行了。
小麦巫师

2

PowerShell,得分:19 10

#twasbrilligandTheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebewarethe
'The Jabberwock'+#m
'y'

在线尝试!

Pavel的Ruby答案端口。感谢乔·金-9分。

字符串+串联在一起。删除注释并解析代码后,PowerShell会将其视为'The Jabberwock'+'y'。该字符串保留在管道上,并且输出是隐式的。


我将要发布这个确切的答案:P
帕维尔(Pavel)

你能不能结合起来The,并Jabberwock成一个字符串?在线尝试!
Jo King

@JoKing确实,谢谢。有趣的是,没有行继续符,您的情况如何。我不知道该解析规则何时会更改...
AdmBorkBork

1

果冻,得分:8

“ĠȥṘ®ṖȤ»

在线尝试!

仅压缩字符串,并且当删除所有非字母字符时,它是一个空字符串。令人讨厌的是,最短的压缩形式“81Iȯd»具有字母字符,都不是tw




1

帆布,得分5

twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware∙The Jabberwockpm∙yp

在这里尝试!



1

点子,得分5

twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebewarethejabberwockmysonthejawsthatbitetheclawsthatcatchbewarethejubjubbirdandshunthefrumiousbandersnatchhetookhisvorpalswordinhandlongtimethemanxomefoehesoughtsorestedhebythetumtumtreeandstoodawhileinthoughtandasinuffishthoughthestOOD|"The Jabberwock"witheyesofflamecamewhifflingthroughthetulge'y

在线尝试!

幸运的是,Pip中的小写字母都是变量,它们本身是表达式中的无操作符。代码有趣的部分:

OOD|"The Jabberwock"

扫描仪OODO依次分解ODOD是一个未定义的变量,其值为nil(falsey);然后,我们使用进行逻辑“或”运算"The Jabberwock",然后O不使用换行符输出。

'y

单字符字符串y。由于它是程序中的最后一个表达式,因此将其打印出来。


1

SmileBASIC,得分10

@twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware?"The Jabberwock";
@m?"y

这几乎直接取自Yabasic答案,由于SB是一种更好的语言,我们可以通过使用标签而不是注释来缩短它,从而消除了某些换行符的需要

对于相同的大小,还有另一种替代解决方案:

@twasbrillig ... ?"The Jabberwock"+@my[2]

表达式内的标签被视为字符串。(@my == "@my"),因此取字符2为“ y”。


1

C(gcc),得分58

//样式注释+换行比旧样式便宜的有用事实来自@ wizzwizz4对@Steadybox的答案的注释。

-m32标志是必需的。

某些人可能会因调用该函数的冗长名称而感到沮丧,而另一些人可能会发现这种反对很含糊。最后,我们所有人都必须注意低分的警笛声。

twasbrilligan;d(t,h,e,slithytovesdidgyreandgimble)int*h,*e;//wabeallmimsywere
{t--?*h++=*e++,//borogovesan
d(t,h,e):0;}momerathsoutgrabebewar;*e="The Jabberwock\171";mysonthejawsthatbitetheclawsthatcatchbewarethejubjubbirdandshunthefrumiousbandersnatchhetookhisvorpalswordinhandlongtimethemanxomefoehesoug(h,tsoreste){d(4,h,e);}

在线尝试!


1

批次,得分15 11

:twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebewarethejabberwockmysonthejawsthatbiteth
@ec%lawsthatcatchbewarethejubjubbirdandshunthefrumiousbandersnatchhetookhisvorpalswordinhandlongtimethemanxomefoehesoughtsorestedhebythetumtumtreeandstoodawhileinthoughtandasinuffisht%ho%ughthestood% The Jabberwock%withe%y

基本上只是echo The Jabberwocky带有未使用的变量和标签。

旧版本(得分24):

:twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebewarethejabberwockmysonthejawsthatbitetheclawsthatcatchbewarethejubjubbirdandshunthefrumiousbandersnatchhetookhisvorpalswordinhandlongtimethemanxomefoehesoughtsorestedhebythetumtumtreeandstoodawhileinthoughtandasinuffishthoughthestoodthejabberwockwitheyesofflamecamewh
@if %1%fl%i==%ngthroughthetulgeywoodandburbledasitcameonetwoonetwoandthroughandthroughthevorpalbladewentsnickersnackheleftitdeadandwithitsheadhewentgalumphingbackandhastthousla%i n The Jabberwock%cometom%y
:armsmybeamishboyofrabjousdaycalloohcallayh
@echo %*

需要将代码保存在一个文件中,n.bat并从同一目录运行。

可以使用任何名称的替代版本(得分27):

:twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebewarethejabberwockmysonthejawsthatbitetheclawsthatcatchbewarethejubjubbirdandshunthefrumiousbandersnatchhetookhisvorpalswordinhandlongtimethemanxomefoehesoughtsorestedhebythetumtumtreeandstoodawhileinthoughtandasinuffishthoughthestoodthejabberwockwitheyesofflamecamewh
@if %1%fl%i==%ngthroughthetulgeywoodandburbledasitcameonetwoonetwoandthroughandthroughthevorpalbladewentsnickersnackheleftitdeadandwithitsheadhewentgalumphingbackandhastthousla%i %~n0 The Jabberwock%cometom%y
:armsmybeamishboyofrabjousdaycalloohcallayh
@echo %*

说明(已删除变量):

:twas...                         Label (No labels were used, no goto in the poem)
@if %1i==i %~n0 The Jabberwocky  If no command line arguments, run this batch file again
:arms...                          with the arguments 'The Jabberwocky'
@echo %*                         Echo all arguments

1

Perl 5,子例程,得分11

{twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware;'The Jabberwock'.~'X'}

但使用字符\ x86(v134)代替X。

(perlsub说:“签名是子例程主体的一部分。通常,子例程主体只是一段括号内的代码。”)


这会打印y吗?
Jo King

@JoKing哎呀!现在可以了;谢谢。
msh210 '18

1

Ruby,9个非字母字节

twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebewarethejabberwockmysonthejawsthatbitetheclawsthatcatchbewarethejubjubbirdandshunthefrumiousbandersnatchhetookhisvor=p alswordinhandlongtimethemanxomefoehesoughtsorestedhebythetumtumtreeandstoodawhileinthoughtandasinuffishthoughthestood="The Jabberwock"+withe=?y

在线尝试!

高尔夫球版(出于可读性):

x=p z="The Jabberwock"+w=?y

使用一些长且无用的变量。在ruby中,您可以将whatever_you_want=表达式放在前面,并且它仍然会返回该表达式,只是具有创建一个名字奇怪的变量的副作用。


1

自我修改Brainfuck,得分16

twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware␀The Jabberwock␀my<[<<]>[.>]>>.

在线尝试!

说明

最初,磁带设置如下:

  T h e  J a b b e r w o c k  m y < [ < < ] > [ . > ] > > .   

<[<<]

T>[.>]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.