キラルパズル


45

回転の量が鏡像のように見えない場合、形状はキラルです。このパズルでは、キラルコンピュータープログラムを作成します。

このパズルでは、プログラムを文字の長方形のマトリックスと考えます。そのため、この課題に対するすべてのソリューションは長方形でなければなりません(つまり、すべての線は同じ長さでなければなりません)。これらのプログラムは、四半期ごとにローテーションできます。たとえば、プログラム

The quickish fish
    lept deftly  
  rightwards     

時計回りに1/4回転すると、次のようになります

  T
  h
r e
i  
glq
heu
tpi
wtc
a k
rdi
des
sfh
 t 
 lf
 yi
  s
  h

これらのプログラムを反映することもできます。同じプログラムが垂直軸に反映されています:

hsif hsikciuq ehT
  yltfed tpel    
    sdrawthgir   

カイラルプログラムは、任意の回数回転すると、常に「left」を出力するプログラムです。ただし、反映されると、right何度回転しても「」を出力するプログラムが生成されます。

あなたの仕事は、可能な限り少ないバイトでキラルプログラムを書くことです。

追加の規則

  • 出力は大文字と小文字を区別しませんが、一貫している必要があります。(たとえば、「LEFT」と「rIgHt」を出力できますが、このケーシングは回転下で一貫している必要があります)

  • 行は、改行または改行と改行で分割されます。

  • プログラムは長方形である必要があり、スペースまたはコメントで埋めることができますが、各行は同じ長さでなければなりません。

  • 必要に応じて、すべてのプログラムで末尾の改行(または改行と改行)をオプションで使用できます。


誰もが、少なくともこれを簡単にすべての作成プロセスになるだろうその入力、原因を自動回転することができますプログラム持っています
KrystosTheOverlord

@KrystosTheOverlord これをVimのブロックコマンドと:set virtualedit=allモードと共に使用しました。最初のBool出力は、入力がそれ自体の回転に等しいかどうかを確認し、物事を単純化します。を削除{-すると、反映された入力が印刷されます。
Ørjanヨハンセン

@ØrjanJohansenありがとう
クリストス・オーバーロード

回答:


18

パスカル(FPC)2161 755 349バイト

///////bw(,,),(wb///////
///////er'''e''re///////
begin//girgtnflig//nigeb
write//itih'dteti//etirw
('le'//ne'' .''en//'ir'(
,'ft'//////////////'hg',
)end.////////////// 't',
,'t' //////////////.dne)
,'gh'//////////////'tf',
('ri'//ne''. ''en//'el'(
write//itetd'hiti//etirw
begin//gilfntgrig//nigeb
///////er''e'''re///////
///////bw(,),,(wb///////

左を試す

正しく試してください

@tshは、彼のプログラム(コメント)を見たときにもう一度やり直そうと思いました。


755バイトの前のもの:

 begin write('left')end.// 
/e .dne)'thgir'(etirw nigeb
/g                        e
.i                       .g
dn                       di
n                        nn
ew                       e 
)r                       )w
'i                       'r
tt                       ti
fe                       ht
e(                       ge
l'                       i(
'r                       r'
(i                       'l
eg                       (e
th                       ef
it                       tt
r'                       i'
w)                       r)
 e                       we
nn                        n
id                       nd
g.                       i.
e                        g/
begin write('right')end. e/
 //.dne)'tfel'(etirw nigeb 

左を試す

正しく試してください

私の以前の投稿を見たなら、それを忘れてください:)

左右両方のプログラムの回転はすべて同じです。



1
それらのミラーブラケットが正しいことは知っていますが、それでも私を怒らせます。
セリーム

1
それは額入りの鏡のように見えます!
フレデリックグロ

@tsh素晴らしいアイデア!あなたは私がより良いレイアウトを見つけるように動機付けました。
AlexRacer


11

クライン(000)109 87バイト

."left"@\.
\"right"..
@"thgir">.
..@"tfel"\
\"left"@..
.>"right"@
.."thgir"\
.\@"tfel".

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

この回答の短いバージョンを入手できるようにする必要がありますので、幸運を祈ります!

この答えはスパイラルに触発されています。特に、アイデアは2つのインターロックされたスパイラルです。1つは左、もう1つは右です。これには2つの対称性があるため、次のプログラムをチェックして動作を確認できます。

クォーターターン

...\.@\.
\.>"."""
@""l@trl
"tre"hie
thiftggf
fggtfiht
eih"ert"
lrt@l""@
""".">.\
.\@.\...

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

ミラーリング

.\@.\...
""".">.\
lrt@l""@
eih"ert"
fggtfiht
thiftggf
"tre"hie
@""l@trl
\.>"."""
...\.@\.

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

ミラーリングおよびクォーターターン

.\@"tfel".
.."thgir"\
.>"right"@
\"left"@..
..@"tfel"\
@"thgir">.
\"right"..
."left"@\.

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


10

クライン(000)27 25バイト

\(("right"@/
\(("left"@!\

オンラインでお試しください! 一度回転しました! 2回回転しました! 3回回転しました!

そして反転:オンラインで試してみてください! 一度回転しました! 2回回転しました! 3回回転しました!

私にちょっとしたトラブルを与えたのは、一度ひっくり返して回転させたことだけでした。

\/
!@
@"
"t
th
fg
ei
lr
""
((
((
\\

これは、の2つのセットの唯一の理由です((


9

クライン(211)、37バイト

!\"left"@"thgir"\!
!/............../!

これには、回転ごとに異なるプログラムがあります。

説明

これらのプログラムはそれぞれ、実行前に何も実行されない正方形に埋め込まれていることに注意してください

変化なし

!\"left"@"thgir"\!
!/............../!

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

!上で実行ジャンプを作る\"left"@負荷の文字列を"left"スタックに、スタックを印刷するプログラムを終了

クォーターターン

!!...IP->
\/
".
r.
i.
g.
h.
t.
".
@.
".
t.
f.
e.
l.
".
\/
!!
^
|
P
I

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

実行は正方形の右上隅から実行され、左下隅で続行され、もう一度!\"left"@印刷され"leftます。

半回転

                ^
                |
                P
                I
!/............../!
!\"right"@"tfel"\!
..................
..................
..................
..................
..................
..................
..................
..................
..................
..................
..................
..................
................^.
................|.
IP->............P.
................I.

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

ここで、実行パスは北側から出て、西側を通って再び入り、東から再び出てから南へ入ります。\パスをバウンスし"left"@て印刷します。

4分の3ターン

!!..IP->
/\
."
.l
.e
.f
.t
."
.@
."
.t
.h
.g
.i
.r
."
/\
!!
^
|
I
P

オンラインで試す

実行は右上隅から終了し、左下に再入力します。ミラーは再び/\パスをリダイレクトし"left"@て印刷します。

反射

!\"right"@"tfel"\!
!/............../!

これは、基本的にすべての回転の左と同じです。


9

JavaScript(Node.js)1481 599 505 461 341 305 271バイト

/g+///g/g"c.c"g/
g=//////=rolol=g
"left"///inone/+
console//gsgsf//
.log(g)//ho(ot//
console//tlgl"//
"right"//"e)e//g
g=//////////////
//////////////=g
g//e)e"//"thgir"
//"lglt//elosnoc
//to(oh//)g(gol.
//fsgsg//elosnoc
+/enoni///"tfel"
g=lolor=//////=g
/g"c.c"g/g///+g/

ミラーリング

/g"c.c"g/g///+g/
g=lolor=//////=g
+/enoni///"tfel"
//fsgsg//elosnoc
//to(oh//)g(gol.
//"lglt//elosnoc
g//e)e"//"thgir"
//////////////=g
g=//////////////
"right"//"e)e//g
console//tlgl"//
.log(g)//ho(ot//
console//gsgsf//
"left"///inone/+
g=//////=rolol=g
/g+///g/g"c.c"g/

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

(ミラーバージョンを含むすべてのテストケースについては、TIOリンクを参照してください)

さらにゴルフをしましたが、22x22 -> 21x21@ JoKingのクレジットサイズです!

サイズ38×38 24×24 22×22 21×21 18×18 17×17 16×16、4回対称性。

ここで質問があります-JSで15x15以下にすることは可能ですか?私が少なくとも必要なのは、2つのサブブロックとエッジの間のコメントセパレータなので、少なくとも7 + 2 + 2 + 5 = 16行ですか?


@JoKingああ、それは実用的だ。試してみたい;)
浅本しえる

@JoKing 21x21になりました、ありがとう;)
浅本しえる


8

Gol> <>、23バイト

\"thgir"H /
\"tfel"H.9\

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

これはKlein answerと同じ形式ですが、2バイト短くなっています。たぶん、最後の2バイトをオフにできる別の2D言語がそこにあるかもしれません...しかし、今のところ、これはできるだけ短いです。


oof、私は過去1時間、これをgol> <>で作成した後、スクロールダウンしてこれを見つけました。いい仕事だ!
KrystosTheOverlord

7

アリス、25バイト

}/"regttoo {
{/"lifh""@@{

左:通常時計回り1/4回転1/2回転反時計回り1/4回転

右:全体に反映横軸右下対角線縦軸にアップ右対角線

説明

このプログラムには3つの部分があります。最初の部分は3つ{}コーナーと1つのコーナーです。{それが到達するまでのターンIPは、左}それは右折、その時点で。反映されたバージョンでは、IPは元のプログラムの一番上の行に沿って移動します。元のバージョンでは、右に曲がるとすぐに隣接するにヒット{し、元のプログラムの一番下の行に沿ってIPを指します。

次は、2番目の列の2つのスラッシュです。プログラムが水平方向の場合、いずれかのタイプのスラッシュは単に序数モードに変更され、IPをすでに行っていたのと同じ左/右方向に送信します。プログラムが垂直方向の場合、IPはかなり跳ね返りますが、両方をスラッシュにすると同じ結果になります。(2つのバックスラッシュは逆の結果をもたらし、それぞれの1つが無限ループを作成します。)

プログラムの残りの部分は簡単です。順序モードのIPは斜めに跳ね返るので、このセクションに入った方法に応じて、どちらか"left"o@または"right"o@実行されます。


7

六角形、98バイト

\.@.t;./r.
.)@.;...;.
ll..)gt.;$
;.i<;;;i);
e;@.)@e;.l
.;e;d.g|.|
rt/;t.;)g\
@f.#l.;..r
\.;\.;i\.i

オンラインでお試しください!| 90°回転 | 180°回転 | 回転270°
反転 | 90°回転&反転 | 180°回転および反転 | 270°回転および反転

回転や反転は実際のプログラムを大幅に変更する可能性があるため、六角形はこの課題にとっては一種の楽しみでした。各回転/反転は、独自のプログラムです。一部のプログラム実行パスは、他のプログラム実行パスよりもはるかに興味深いものです。

これを思い付くには、おそらく必要以上に時間がかかったことを認めます。Hexagonyでは短い答えができると確信しているので、幸運を祈ります!



6

APL(dzaima / APL)、181バイト

プログラムには回転対称性があるため、チェックする必要があるのは2つのケースのみです。


⍝⍝⍝⍝⍝⍝⍝  tt
t'lef' ←←←⍝
⎕←t,     't'
t'righ'r,l
        i e
  '     g f⍝
⍝' h     h '⍝
⍝f g     t ⍝ 
⍝e i     ⍝   
⍝l,r⍝'hgir'←t
⍝'t'     ,t←⎕
⍝←←← ⍝'fel'←t
⍝t⎕t  ⍝⍝⍝⍝⍝⍝⍝

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

tt  ⍝⍝⍝⍝⍝⍝⍝
⍝←←← 'fel't
't'     ,t←⎕
l,r'hgir't
e i        
f g     t  
' h     h '
  '     g f⍝
   ⍝     i e⍝
t←'righ'⍝r,l⍝
⎕←t,     't'⍝
t←'lef'⍝ ←←←⍝
⍝⍝⍝⍝⍝⍝⍝  t⎕t⍝

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

説明

これは私の最初のAPLプログラムなので、非常に簡単です。面白いと思うトリックを1つだけ使用します。

すべてのコメントを削除することから始めると、次のプログラムが得られます

t'lef'
⎕←t,     't'
t'righ'

t'righ'
⎕←t,     't'
t'lef'

左のプログラムから始めて、3つのことを行います。

  1. 'lef'変数に割り当てるt

  2. 変数tと文字を印刷します't'

  3. 'righ'変数に割り当てるt

ミラーであるため、適切なプログラムはこれらの3つの手順を逆の順序で実行します。これは'left'、左側のプログラムと'right'右側のプログラム用に印刷することを意味します。

ここでの1つの秘isは、't'実際にはコードの回転コピーから来るということです。コードの3番目の列を見ると、それがであることがわかります't'。これ't'を回転したバージョンで再利用して、t必要なものを追加します。


5

Haskell461 379バイト

ØrjanJohansenによって保存された82バイト

--_----------mppr--
-- ----------a  l--
rl=p  p--   niam= _
p m="left"-- n==p--
p a="right"++ "" --
main  =putStr rl --
--n +r       =iep--
-- -+t       pgf---
-- -"S       uht---
-- "tt       tt" --
---thu       S"- --
---fgp       t+- --
--pei=       r+ n--
-- lr rtStup=  niam
-- "" ++"thgir"=a p
--p==n --"tfel"=m p
_ =main   --p  p=lr
--l  a---------- --
--rppm----------_--

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

これは4回対称であるため、ミラーをテストするだけです。

--rppm----------_--
--l  a---------- --
_ =main   --p  p=lr
--p==n --"tfel"=m p
-- "" ++"thgir"=a p
-- lr rtStup=  niam
--pei=       r+ n--
---fgp       t+- --
---thu       S"- --
-- "tt       tt" --
-- -"S       uht---
-- -+t       pgf---
--n +r       =iep--
main  =putStr rl --
p a="right"++ "" --
p m="left"-- n==p--
rl=p  p--   niam= _
-- ----------a  l--
--_----------mppr--

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

これは始まりです。理想とはほど遠いですが、ここで興味深いことがいくつかあります。Haskellは確かにこの課題にとって興味深い言語です。これが私のものであれ、他の誰かのものであれ、これに打ち勝つ答えを楽しみにしています。


1
これを短縮379バイト(19路盤)
Ørjanヨハンセン

4

プロローグ(SWI)649 188バイト

反転せず、回転しない

:-%    l :%r     %-:
write(%e%-(i %(etirw
left).%f.weg%.)right
%      t)rth.      %
%      )tiit)      %
%      .htr)t      %
right).%gew.f%.)left
write(% i(-%e%(etirw
:-%     r%: l    %-:

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

反転、回転

:wr%%%lw:
-ri   er-
%ig   fi%
 th   tt 
 et   )e 
 ()   .( 
 %.   %% 
  %.)tfel
right).% 
%(etirw-:
:-write(%
 %.)thgir
left).%  
 %%   .% 
 (.   )( 
 e)   re 
 tl   it 
%ie   gi%
-rf   hr-
:wt%%%tw:

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

反転、非回転

:-%     r%: l    %-:
write(% i(-%e%(etirw
right).%gew.f%.)left
%      .htr)t      %
%      )tiit)      %
%      t)rth.      %
left).%f.weg%.)right
write(%e%-(i %(etirw
:-%    l :%r     %-:

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

反転、回転

:wl%%%rw:
-re   ir-
%if   gi%
 tt   ht 
 e)   te 
 (.   )( 
 %%   .% 
left).%  
 %.)thgir
:-write(%
%(etirw-:
right).% 
  %.)tfel
 %.   %% 
 ()   .( 
 er   )e 
 ti   lt 
%ig   ei%
-rh   fr-
:wt%%%tw:

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


4

プロローグ(SWI)239 223 209 181バイト

%%%%%%%  l:r%
right).% e-i%
:-write(%fwg%
left).%  trh%
  %      )it%
 %(      .t)%
%.e%     %e.%
%)t.      (%
%ti)      %
%hrt  %.)tfel
%gwf%(etirw-:
%i-e %.)thgir
%r:l  %%%%%%%

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

プログラムには4つの対称性があるため、ミラーを確認するだけです。

%r:l  %%%%%%%
%i-e %.)thgir
%gwf%(etirw-:
%hrt  %.)tfel
%ti)      %  
%)t.      (% 
%.e%     %e.%
 %(      .t)%
  %      )it%
left).%  trh%
:-write(%fwg%
right).% e-i%
%%%%%%%  l:r%

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


4

Python 2、209バイト(14 x 14)

通常(左):

##########sps#
s="left"##=r=#
print s###"i"#
s="right"#rnl#
####      ite#
###"      g f#
#"#t      hst#
#tsh      t#"#
#f g      "###
#eti      ####
#lnr#"thgir"=s
#"i"###s tnirp
#=r=##"tfel"=s
#sps##########

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

反映(右):

#sps##########
#=r=##"tfel"=s
#"i"###s tnirp
#lnr#"thgir"=s
#eti      ####
#f g      "###
#tsh      t#"#
#"#t      hst#
###"      g f#
####      ite#
s="right"#rnl#
print s###"i"#
s="left"##=r=#
##########sps#

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


3

クリーン1331 1055バイト

-276のおかげバイトØrjanヨハンセンを

// ////////////;/;/////////// //
// ////////////S/S/////////// //
  module m////mtmt////m eludom  
//o///////////=a=a///////////o//
//d///////////"r"r///////////d//
//u///////////tttt///////////u//
//l///////////f#h#///////////l//
//e///////////emgm///////////e//
// ///////////loio/////////// //
//m///////////"drd///////////m//
//////////////=u"u//////////////
//////////////ml=l//////////////
//////////////#eme//////////////
////////////// =#=//////////////
;Start#module= 0   #m="left"=m//
//m="thgir"=m#   0=eludom#tratS;
;Start#module=0   #m="right"=m//
//m="tfel"=m#   0 =eludom#tratS;
//////////////=#= //////////////
//////////////eme#//////////////
//////////////l=lm//////////////
//////////////u"u=//////////////
//m///////////drd"///////////m//
// ///////////oiol/////////// //
//e///////////mgme///////////e//
//l///////////#h#f///////////l//
//u///////////tttt///////////u//
//d///////////r"r"///////////d//
//o///////////a=a=///////////o//
  module m////tmtm////m eludom  
// ///////////S/S//////////// //
// ///////////;/;//////////// //

「左」をオンラインで試してみてください!

オンラインで「正しく」試してください!

これは多くの理由で困難でした:

  • Clean では、ファイルヘッダーmodule <filename>が開始時に存在し、ファイルの開始のみ必要です。残念ながら、これは、ミラー化されたプログラムのローテーションを有効にするには、ファイルの下部にも表示する必要があることを意味します。これはさらに悪いことに、module ..グローバル、ため無効であるlet .. inwhere ..with ..定義は、また、module定義されていない場合に表示されるトークンはエラーの原因になります。
  • ブロックコメントと行コメントの両方がネストします/* /* */。1レベルのコメントを開いたままにします/* // */(同様に、残りの行をコメント化します)。
  • 同じ関数を複数回定義できますが、それはそれ自体の直後のみです。

幸いなことに、必要なのは(let-before)式で何かとして定義できます。Cleanは決して使用されない(および他の同様に未使用のさまざまな)代替を型チェックしないため、必要な2番目の定義は完全なゴミになる可能性があります。これは、私たちは第二を使用することができますクリーン扱うため、ファイルの一番下にモジュールヘッダを消費する関数を呼び出すようにし、(我々が定義したので、これと、エラー発生しません)。それが文字列であって関数ではないことは重要ではありません。代替が型チェックされることはないからです。module#..StartStartm module mmmodulemmodulemmStart

これは、コンパイラーの目で見れば簡単にわかります。

module m;
Start#module=0#m="left"=m;
Start#module=0#m="right"=m module m

1
1055のマージms
Ørjanヨハンセン

@ØrjanJohansenOoohいいね!
Οurous

3

Brachylog、341バイト

Ẹw"thgir"∧"left"wẸ
w"              "w
"                "
t                t
f                h
e                g
l                i
"                r
∧                "
"                ∧
r                "
i                l
g                e
h                f
t                t
"                "
w"              "w
Ẹw"tfel"∧"right"wẸ

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

!enilno ti yrT

Brachylogを利用して、メインの述部を最初の行に置き、他の行をコンパイルできることを要求する以外はあまり気にしません。反映されずに、同じ行に空の文字列と「左」が続き、同じ行に空の文字列と「右」が続くことを反映します。私はを使用して(有用な)非正方形バージョンを作成する方法があるかもしれないと思うように誘惑されますが、それはリフレクションの下で異なる動作をさせようとせずにかなり難しいかもしれません。


2

Ruby、181バイト

#########tpt#
t=:left##=u=#
puts t###:t:#
t=:right#rsl#
####     i e#
###t     gtf#
#t#h     h#t#
#ftg     t###
#e i     ####
#lsr#thgir:=t
#:t:###t stup
#=u=##tfel:=t
#tpt#########

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

これは、Curtis BechtelのRubyへのPythonの回答の移植版であり、もう少し詳しく説明しています。

実際、彼のPythonプログラムは多言語であり、Rubyでも動作するため、最初の答えはコピーペーストでしたが、それは不公平に思えました。そこで、ベーススクリプトから開始して新しい回答を生成するスクリプトを作成しました。ここで試すことができます:

あなた自身のものをつくる


2

バッチ、438 321バイト

:::::::::::::@@@:
@echo left&: eee:
@exit/b&:    cxc:
@echo right&:hih:
:  :         oto:
:: &          / :
:& t         rbl:
:t h         i&e:
:f:g         g:f:
:e&i         h t:
:lbr         t &:
: /          & ::
:oto         :  :
:hih:&thgir ohce@
:cxc    :&b/tixe@
:eee :&tfel ohce@
:@@@:::::::::::::

説明:A :はコメントと同程度のラベルを示すために使用されるため、プログラムには回転対称性があるため、2つのバージョンの唯一の違いはどちらの@行が最初であり、その場合、どちらかleftまたはrightスクリプトの前に出力される終了します。

回転した線をお互いに創造的に重ねてみましたが、実際にはより大きなグリッドになりました。

編集:@ØrjanJohansenのおかげで117バイトを節約しました。


私はあなたが交換することができると思い&rem &:
Ørjanヨハンセン

@ØrjanJohansen同様のチャレンジで以前試してみたことを覚えているようですが、うまくいったとは思いません。
ニール

これは(Haskellを気にしないでください、TIOにはバッチがないようです)test.batWin10コマンドプロンプトのように私のために働いた。
Ørjanヨハンセン

@ØrjanJohansenまあ、それは以前のバージョンのバグCMD.EXEか何かだったかもしれません。
ニール

2

05AB1E(レガシー)89 55 バイト

'…¸q©ƒ'
ƒ     …
©     ¸
q     q
¸     ©
…     ƒ
'ƒ©q¸…'

非常に基本的なアプローチ。完全に小文字で出力します。

オンラインそれを試してみたり、反射オンラインそれを試してみてください(各回転が同じです)。

説明:

'…¸   '# Push the dictionary string "left" to the stack
   q   # Stop the program (and output the top of the stack implicitly)
       # Everything else after it is ignored

逆に:

'ĩ   '# Push the dictionary string "right" to the stack
   q   # Stop the program (and output the top of the stack implicitly)
       # Everything else after it is ignored

(セクション鉱山のこの05AB1Eチップを参照してください。辞書を使用する方法?理由を理解すること'…¸である"left"'ƒ©されます"right"


無視されたコマンドは実際には何もしません qか?
Ørjanヨハンセン

@ØrjanJohansen第二に、彼らは決して到達しません。技術的には何もしないわけではありません(これは通常、回答で無視されるすべてのコードに使用される用語です)。また、これは05AB1Eの新しいバージョンでは機能しません。これは、最初にコードを調べ(コンパイルの一種)、その後実行するだけだからです。レガシーバージョンは実行を開始するだけだと思います。そのため(legacy)、05AB1E のバージョンを使用していると指定しました。
ケビンクルーッセン


1

ルーン文字のエンチャント、116バイト

> \ !U\L
 ...@.. 
 \.R""" 
 @""trl 
 "lrhie 
 teiggf 
 ffgiht 
 ethrt" 
 l"t""@ 
 " "R.\ 
 .\@.@. 
DR\!!/R 
     !! 

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

そして逆に

厳密にはポートではありませんが、2つの言語の典型的なほぼ互換性を考慮して、Post Left Garf HunterのKlein 000回答を出発点として使用しました(ほとんどのコマンドは同じで、RunicのエッジラッピングはKlein 000と同一です)。唯一の問題は、Klein IPが常に左上から始まり、Runicがそうではないことです。そのため、.これらはすべて元のコードの一部であり、RunicによってNOPとして処理されますが、フロー制御の一部として追加する必要があるNOPです。

"left"4回転すべて、および"right"ミラーリングされたとき(およびその4回転すべて)に印刷します。変更後、中央の2つの列は完全に未使用であったため、削除できました。

理論的には、バイト数を少なくするために多数の末尾空白を使用した回転を使用できます(このバリアントなど)が、外部ツールを使用して構造を正しく回転するにはスペースが必要なので、それらを含めました。

以下のバリアントには、削除された未使用のチャンクが含まれますが、それ以外は同一です。

4つすべての左。出力leftleftleftleft(4つすべてがこのように実行できるという事実は偶然です)。

右1右2右3右4


1

Gol> <>、342バイト

 8A_          _A8 
9       ""       9
A       LR       A
_       EI       _
        FG        
        TH        
        "T        
         "        
 "TFEL" HH"RIGHT" 
 "THGIR"HH "LEFT" 
        "         
        T"        
        HT        
        GF        
_       IE       _
A       RL       A
9       ""       9
 8A_          _A8  

うわー!それは予想よりも時間がかかり、途中で反射が垂直であり、コーディングしていたように水平ではないことに気付きました!これはうまくいくと確信していますが、間違えた場合はお知らせください。これはおそらく、とんでもない量でゴルフすることができます。私はそうするために極端なブルートフォース法を採用しました。形状自体は実際には正方形であり、技術的に対称です。ただし、x軸に沿っている場合を除き、反転すると、代わりに「右」を返します!!!

このプログラムを可能にしたキャラクターは「A」で、これにより特定の行の先頭へのテレポーテーションが可能になります!

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


1
垂直反射と水平反射は、回転後は同じであるため、違いはありません。
ウィートウィザード

@TRITICIMAGVS許は、そのことを考えていなかった、おかげでそのアウトを指し示すために、また、私は冗談のサイズは27バイトでしひとつになって、この全体の事は無意味です実現
KrystosTheOverlord

1
ええ、このプロセスを楽しんだら、それだけの価値があると思います。
ウィートウィザード
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.