ねじれた「Hello world!」を構築する


31

あなたの仕事は、印刷物というプログラムを書き、非常に簡単であるHello, world!ツイストがプリントというプログラムを作成すること、Twister!

弦のねじれ方

ツイストアルゴリズムは非常に単純です。各列はそのインデックスだけ下にシフトされます(col 0は0に移動し、col 1は1に移動します...)。列シフトは上に折り返されます。それはちょっとこのように見えます:

a
ba
cba
----
 cba
  cb
   c

行の下のすべてが上に折り返されます。実際の例:

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

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

(お気に入りの言語のその他の例とツイスターは こちらです

得点

プログラムは、パディングされた長方形でなければなりません。これはコードゴルフなので、バイト数が最も少なくなります!

ルール

  • 最初のプログラムは印刷する必要があります Hello, world!。末尾の改行は1つだけ許可されます。
  • 最初と2番目のプログラムは同じ言語である必要があります。
  • 2番目のプログラムは印刷する必要がありますTwister!。末尾の改行は1つだけ許可されます。
  • プログラムには少なくとも2行2列が必要です。

3
Jellyのコードページでは、ラインフィードに対応する(および、すべての目的で機能する)文字には、コードポイント127(ASCII DEL)があります。コードポイント10の文字(ASCII改行)にはグリフが½あり、数値の平方根を取ります。2つのうちどちらをこの課題の改行と見なす必要がありますか?
デニス

ダーンは、私たちは「さようなら残酷な世界」のようなものを出力することと思います..だから代わりにあまのじゃく意味で「ツイスト」を使用した「ツイストのHello World」を望んだだけだったI
DasBeasto

@Dennisこの場合に使用するのが良いのはゼリー改行でしょう。
Jアトキン

@JAtkin OK、明確にしてくれてありがとう。それに応じて回答を更新しました。
デニス

回答:


10

ゼリー33 31 29 バイト

元の

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

オンラインでお試しください。

ツイスト

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

オンラインでお試しください!

使い方

各プログラムでは、各行がリンクを定義します。最後のリンクはメインリンクであり、プログラムの起動時に実行されます。最初のリンクへの参照がないため、単に無視されます。

両方のプログラムについて、Jellyの静的辞書圧縮を使用し“ɗ⁻%OḶ$“¡¦ḟṠ»てリストを生成します。['Hello, world!', 'Twister!']

元のコードとねじれたコードの唯一の違いは、メインリンクの最後の文字です。リストの最初の文字列を選択し、最後の文字列を選択します。


2
それは「神聖の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!データを文字列の奇数インデックスに配置し、最初の2文字(パディング)を削除する代わりに、1文字おきに削除するように変更します。


これは私のアプローチよりもそんなに賢くある
wnnmaw

これはちょっとばかげている、40の賛成票?
Jアトキン

@JAtkinいくつかのPythonソリューションが大量に取得する傾向があることに気付きました。私が不平を言っているわけではありません:〜)
PurkkaKoodari

より涼しい方法:print " Hello, world!" [2::]
エリック・アウトゴルファー

@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 単一の原子を生成し、下方に移動します。
  • 2つ\(ミラー)は、2番目の列に偏向します。
  • "Hello, world!" 必要な文字列を出力します。
  • 1ポータルです。原子を1読み上げ順序で次へテレポートし、その方向(の横にあるものr)を保持します。
  • アトムはまだ下に移動し、;アトムを破壊し、プログラムを終了します。

Twister!コードの制御フローはもう少し...ねじれています...

  • 再び、Dアトムを生成します。
  • \ それを右に偏向します 1ます。
  • これで、ポータルは次へアトムを送信します1。原子oは、質量を変更するだけに当たりますが、無視できます。コードがラップアラウンドするので、アトムは1再び同じものにヒットし、2行下にスキップします。繰り返しますが、を無視することができ、lアトムは折り返して1再びヒットします。これで1コードにはそれ以上ないので、アトムはスキップして最後までスキップします1一番上。
  • エッジの周りをもう一度ラップした後、原子は再び偏向され\、今度は再び下降します。
  • "Twister!" 必要なコードを出力します。
  • 1最初のを過ぎてアトムをもう一度テレポートしますが、プログラムを終了するのを待っている;別の原子があり;ます。

うわー、すぐ近くにあります!:)私は確か...短くする方法がありますよ
FryAmTheEggman

どうして核分裂が好きなの?
Jアトキン

@JAtkinなぜ私たちはそうしませんか?:)
マーティンエンダー

@MartinBüttnerこのチャレンジの理由を具体的に考えていましたか?
Jアトキン

1
@JAtkin 2D言語は適切であるように見え、Fissionはプログラムへの1つ以上の任意のエントリポイントを選択できるため、特にシンプルに見えました。
マーティンエンダー

15

核分裂、35バイト

核分裂アプローチ#3(最初の投稿から編集したものを数えて#4)。

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

オンラインでお試しください!

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

オンラインでお試しください!

説明

これは、実際にはまだ最も単純な核分裂ソリューションです。どちらのプログラムにもR、右向きのアトムとL左向きのアトムを作成する2つのエントリポイントがあります。いずれの場合でも、;それらの1つがすぐに破壊されます。

現在、Hello, world!プログラムでは、アトムは最初に文字列の半分をで印刷し"Hello, "、次に\and /(ミラー)はアトムを左に向かう2行目に偏向します。"world!"(移動する原子の方向で読み取られます)文字列の残りを出力します。L今は何もしません;このアトムも破壊し、プログラムを終了します。

Twister!プログラムは、本質的に同じであるが、180度回転しました。今回、Lアトムは生き残り、で印刷を開始し"Twist"ます。そして\/今度はもう一方の線に偏向し、今度は右に進みます。"er!文字列の残りを出力しR、ノーオペレーションで;プログラムを終了します。


Amazing! I think this is about as small as it can get, the amount of reuse is impressive.
FryAmTheEggman


4

Japt, 67 61 57 bytes

Saved 6 bytes thanks to @JAtkin, 4 bytes thanks to @Ian

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

Twisted:

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

Test it online: Original, Twisted

How it works

"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

If this works like I think it does, you can remove the trailing space after Twister! by replacing the spaces with ..
J Atkin

@JAtkin It actually doesn't work like that, but I can save a bunch of bytes that way. Thanks!
ETHproductions

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

Could be much easier to read with a different filler character...
mbomb007

4
@mbomb007 Since when is "easy to read" an achievement? :D
yo'

4

Python, 398 414 380 456 bytes*

Managed to update so that it is compliant with the rules, but I still hesitate to call this competitive. Since the commented lines are needed for it to run, I've included them in the byte count

This solution does not follow the rules, as it will print error messages in addition to the allowed output.

I just wanted to see if this could be done in python. It can, but it is not pretty.

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!'     

When twisted becomes

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!'   !

I think you could remove the space in each line, then remove the last line altogether.
ETHproductions

I didn't think to do that since it was against the rules of the initial twisting challenge, but thanks!
wnnmaw

You forgot to update the code ;)
ETHproductions

I figured it wouldn't really matter, but I did it for good measure
wnnmaw

1
I think you have misunderstood. The code is required to be a padded rectangle, but you can remove the space from rint ' on every line.
ETHproductions


1

Brainfuck, 467 367 285 bytes

Untwisted

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

Try it online!

Twisted

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

Try it online!


1
You can save bytes by using the current shortest known "Hello, world!" program
Jo King

@JoKing Thank you for the suggestion! Any ideas how to find a smaller "Twister!" program as well?
orthoplex

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.