建立一个扭曲的“ Hello world!”


31

您的工作很简单,编写一个可打印的程序Hello, world!,将其扭曲即可创建一个可打印的程序Twister!

弦如何扭曲

扭曲算法非常简单。每列均按其索引向下移动(col 0下移0,col 1下移1,...)。列移位换行到顶部。看起来像这样:

a
ba
cba
----
 cba
  cb
   c

线下的所有内容都环绕到顶部。真实的例子:

Original:
\\\\\\\\\\\\
............
............
............

Twisted:
\...\...\...
.\...\...\..
..\...\...\.
...\...\...\

(其他示例和您喜欢的语言在这里

计分

您的程序必须是填充矩形。这是代码高尔夫球,因此最低字节数为准!

规则

  • 您的第一个程序必须打印Hello, world!。只允许一个尾随换行符。
  • 您的第一个和第二个程序必须使用相同的语言。
  • 您的第二个程序必须打印Twister!。只允许一个尾随换行符。
  • 您的程序必须至少有2行2列。

3
在Jelly的代码页中,与换行符相对应的字符(出于所有目的,其作用类似)具有代码点127(ASCII DEL)。代码点为10(ASCII换行符)的字符带有字形,½并采用数字的平方根。应将两者中的哪一个视为此挑战的换行符?
丹尼斯

该死,是我唯一一个希望“扭曲的Hello World”是在倒行逆施意义上使用“扭曲”,所以我们就可以输出类似“再见残酷的世界”,而不是..
DasBeasto

@丹尼斯我想在这种情况下使用的更好的是果冻换行符。
J阿特金

@JAtkin好的,谢谢您的澄清。我已经相应更新了答案。
丹尼斯

Answers:


10

果冻33 31 29 字节

原版的

“ɗ⁻%OḶ$“¡¦ḟṠ»Ṫ
“ɗ⁻%OḶ$“¡¦ḟṠ»Ḣ

在线尝试。

扭曲的

“ɗ⁻%OḶ$“¡¦ḟṠ»Ḣ
“ɗ⁻%OḶ$“¡¦ḟṠ»Ṫ

在线尝试!

怎么运行的

在每个程序中,每一行都定义一个链接。最后一个是主链接,它在程序启动时执行。由于没有对第一个链接的引用,因此将其忽略。

对于这两个程序,都使用Jelly的静态字典压缩“ɗ⁻%OḶ$“¡¦ḟṠ»产生列表。['Hello, world!', 'Twister!']

原始代码和扭曲代码之间的唯一区别是主链接的最后一个字符。选择列表的第一个字符串,然后选择最后一个。


2
看起来好像在尖叫“ Holy Sh * t”
阶段

42

Python 2,59个字节

print "  Hello, world!"[ 2::]
#rint "T w i s t e r !"[ ::2]

扭曲:

print "T weils,twerrd!"[ ::2]
#rint "  H l o   o l !"[ 2::]

基本上,将Twister!数据放入字符串的奇数索引中,然后从删除前两个(填充)字符更改为删除其他所有字符。


这比我的方法要聪明得多
wnnmaw '16

这有点荒谬,有40个投票?
J Atkin

@JAtkin我注意到一些Python解决方案倾向于获取大量的解决方案。并不是我在抱怨:〜)
PurkkaKoodari

凉爽的方式:print " Hello, world!" [2::]
越野选手埃里克(Erik the Outgolfer)

@EʀɪᴋᴛʜᴇGᴏʟғᴇʀ可以,但是我现在还是保留它。
PurkkaKoodari

17

裂变215 162 56 53 50字节

这是一个开始:

D1
\\
""
TH
we
il
sl
to
e,
r 
!w
"o
1r
;l
1d
;!
 "

在线尝试!

扭曲时:

D"
\1
"\
T"
wH
ie
sl
tl
eo
r,
! 
"w
1o
;r
1l
;d
 !

在线尝试!

说明

Hello, world!代码是相当简单:

  • D 产生一个原子,向下移动。
  • 这两个\(镜)将其偏转到第二列上。
  • "Hello, world!" 打印所需的字符串。
  • 1是一个门户。它将原子1按阅读顺序传送到下一个原子,并保持其方向(即旁边的那个原子r)。
  • 原子仍然向下移动,进入;原子销毁原子并终止程序。

Twister!代码的控制流程有点...扭曲...

  • 同样,D产生原子。
  • \将其向右偏转到1
  • 现在,门户将原子发送到下一原子1。原子撞击的原子o只是改变其质量,但是我们可以忽略它。代码环绕,因此原子1再次命中相同,跳过了两行。再次,我们可以忽略l,原子环绕并1再次命中。现在1代码中没有更多内容,因此原子会一直跳回到1顶部。
  • 再次环绕边缘后,原子再次通过偏转\,现在又下降了。
  • "Twister!" 打印所需的代码。
  • 1再次传送原子,经过第一个原子;,但是又有另一个原子在;等待它终止程序。

哇,现在很近!:)我敢肯定还有一种方法可以缩短...
FryAmTheEggman '16

你们为什么喜欢裂变?
J阿特金

@Jatkin为什么不呢?:)
Martin Ender

@MartinBüttner我在想为什么要挑战?
J Atkin

1
@JAtkin 2D语言似乎合适,而Fission似乎特别简单,因为您可以在程序中选择一个或多个任意入口点。
Martin Ender

15

裂变,35字节

裂变方法#3(#4计算我在第一篇文章中编辑过的那个)。

R"Hello, " \"tri"
T;L"!dlrow"/"es!w

在线尝试!

R;H"ldor w /"er!"
T"Le!ll,o""\"tsiw

在线尝试!

说明

这实际上是Fission解决方案中最简单的一种。在这两个程序中,都有两个入口点:R创建一个向右原子和L一个向左原子。无论哪种情况,;销毁人员都会立即销毁其中一个。

现在在Hello, world!程序中,原子首先使用来打印字符串的一半"Hello, ",然后\/(是镜像)将原子偏转到第二行。"world!"(沿移动原子的方向读取)打印其余的字符串。L现在是no-op,并且;也会破坏该原子,从而终止程序。

Twister!程序基本相同,但旋转了180度。这次,L原子保留下来,并从开始打印"Twist"。在\/再次偏转它到其他线路,现在要去的权利。"er!打印字符串的其余部分,R是无操作,并;终止程序。


惊人!我认为这尽可能地小,重用的数量令人印象深刻。
FryAmTheEggman '16


4

Japt,67 61 57字节

@JAtkin节省了6个字节,@ Ian节省了4个字节

"Tzwzizsztzezzzzzzrzzzz!"rz;
"Hzezlzlzoz,z zwzorlzdz!"rz;

扭曲:

"Hzezlzlzoz,z zwzorlzdz!"rz;
"Tzwzizsztzezzzzzzrzzzz!"rz;

在线测试:原始扭曲

怎么运行的

"Tzwzizsztzezzzzzzrzzzz!"rz;  // Take this string and remove all "z"s.
"Hzezlzlzoz,z zwzorlzdz!"rz;  // Take this string and remove all "z"s.
                              // Implicit: output *last* expression

如果此方法像我想的那样起作用,则可以Twister!通过将空格替换为来删除尾随空格.
J Atkin

@JAtkin它实际上不能那样工作,但是我可以这样保存一堆字节。谢谢!
ETHproductions '02

"T.w.i.s.t.e.r.!. . . . . "k".(newline)"H.e.l.l.o.,. .w.o.r.l.d.!"k".
J Atkin

使用不同的填充字符可能更容易阅读...
mbomb007 '16

4
@ mbomb007从什么时候“易读”成就开始?:D

4

Python,398414380456字节*

设法进行了更新,使其符合规则,但我仍然犹豫称这种竞争。由于注释行需要运行,因此我将其包含在字节数中

此解决方案不遵循规则,因为它会在允许的输出之外打印错误消息。

我只是想看看是否可以在python中完成。可以,但是不是很漂亮。

print'Hello, world!'
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     

当扭曲成为

print'Twister!'
#rint'Twister!'
#rint'Twister!'
#rint'Twister!'
#rint'Twister!'
#rint'Twister!'
#rint'Hwister!'
#rint'Teister!'
#rint'Twlster!'
#rint'Twilter!'
#rint'Twisoer!'
#rint'Twist,r!'
#rint'Twiste !'
#rint'Twisterw'
#rint'Twister!o
#rint'Twister!'r
#rint'Twister!' l
#rint'Twister!'  d
#rint'Twister!'   !

我认为您可以删除每行中的空格,然后完全删除最后一行。
ETHproductions '02

我不打算这样做,因为这违反了最初的扭曲挑战规则,但是谢谢!
wnnmaw '16

您忘记更新代码了;)
ETHproductions '16

我认为这并不重要,但我确实做到了
wnnmaw

1
我想你误会了。该代码必须是填充的矩形,但是您可以rint '在每行上删除空格。
ETHproductions '02

2

C(gcc),87个字节

不加捻

main(){puts(1?"Hello, world!":"Twister!");}
mai (){puts(0?"Hello, world!":"Twister!");}

在线尝试!

扭曲的

mai (){puts(1?"Hello, world!":"Twister!");}
main(){puts(0?"Hello, world!":"Twister!");}

在线尝试!


1

Brainfuck,467 367 285字节

不加捻

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

在线尝试!

扭曲的

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

在线尝试!


1
您可以使用当前最短的“ Hello,world!”
Jo King

@JoKing谢谢您的建议!任何想法如何找到一个较小的“ Twister!” 程序呢?
Orthoplex

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.