키랄 퍼즐


45

회전 량이 많지 않으면 모양이 거울처럼 보입니다. 이 퍼즐에서는 키랄 컴퓨터 프로그램을 작성합니다.

이 퍼즐에서 우리는 프로그램을 직사각형 문자 행렬로 생각할 것입니다. 따라서이 문제에 대한 모든 솔루션은 직사각형이어야합니다 (즉, 모든 선의 길이는 동일해야 함). 우리는이 프로그램들을 1/4 회전 단위로 회전시킬 수 있습니다. 예를 들어 프로그램

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 나는 이것을 Vim의 블록 명령 및 :set virtualedit=all모드 와 함께 사용했습니다 . 초기 Bool출력은 입력이 자체 회전과 같은지 확인하여 작업을 단순화합니다. 를 제거하면 {-반사 된 입력을 인쇄합니다.
Ørjan Johansen

@ ØrjanJohansen 감사합니다. 지금까지 도움이되었습니다. 결과가 어떻게 될지 생각하고 어떻게 회전시키는 지 알아 내려고 랩탑의 화면을 돌리고있었습니다 !!!
KrystosTheOverlord

답변:


18

파스칼 (FPC) , 2,161 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
나는 그 대괄호가 정확하다는 것을 알고 있지만 여전히 나를 화나게합니다.
Sellyme

1
액자 거울 같아요!
Frédéric Grosshans

@ tsh 훌륭한 아이디어! 더 나은 레이아웃을 찾도록 동기를 부여했습니다.
AlexRacer


11

클라인 (000) , 109 87 바이트

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

온라인으로 사용해보십시오!

이 답변의 짧은 버전을 얻을 수 있어야하므로 행운을 빕니다!

이 답변은 나선에서 영감을 얻었습니다. 특히이 아이디어는 서로 맞물려있는 두 개의 나선입니다. 두 가지 접힘 대칭이 있으므로 다음 프로그램이 작동하는지 확인할 수 있습니다.

쿼터 턴

...\.@\.
\.>"."""
@""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"@\.

온라인으로 사용해보십시오!



9

클라인 (211) , 37 바이트

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

각 회전마다 다른 프로그램이 있습니다.

설명

이러한 각 프로그램은 실행 전에 ops가없는 정사각형으로 채워집니다.

변경 없음

!\"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"@.

3/4 턴

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

온라인으로 사용해보십시오

오른쪽 상단에서 실행이 종료되고 왼쪽 하단에 다시 입력됩니다. 다시 한번 거울 /\은 경로를 재지 정하여 "left"@인쇄합니다.

반사

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

이것은 모든 회전에서 왼쪽과 동일합니다.


9

자바 스크립트 (Node.js를) , 1,481 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 링크를 참조하십시오)

더 골프를 쳤지 만, @JoKing의 22x22 -> 21x21크레딧 크기 !

크기 38x38 24x24 22x22 21x21 18x18 17x17 16x16, 4 중 대칭.

여기에 질문이 있습니다-JS의 15x15 이하를 가질 수 있습니까? 적어도 내가 필요한 것은 두 개의 하위 블록과 가장자리 사이에 주석 구분 기호가 있으므로 적어도 7 + 2 + 2 + 5 = 16 줄입니까?


@ JoKing 오 그것은 실용적으로 보인다. 시도해 볼 것이다;)
Shieru Asakoto

@JoKing 감사합니다. 21x21로 감사합니다.)
Shieru Asakoto



7

Alice , 25 바이트

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

왼쪽 : 일반 , 시계 방향으로 1/4 회전 , 1/2 회전 , 시계 반대 방향으로 1/4 회전

오른쪽 :에 걸쳐 반영 가로 축 , 아래 오른쪽 대각선 , 수직 축 , 최대 오른쪽 대각선

설명

이 프로그램은 세 부분으로 구성됩니다. 첫 번째 부분은 모서리에 세 개와 {하나 }입니다. {가 도달 할 때까지 턴 IP가 남아 }있는이 우회전 가리 킵니다. 반영된 버전에서 IP는 원래 프로그램의 맨 위 행을 따릅니다. 원래 버전에서 오른쪽으로 돌리면 인접 프로그램에 즉시 도달 {하여 원래 프로그램의 맨 아래 행을 따라 IP를 가리 킵니다.

다음은 두 번째 열에있는 두 개의 슬래시입니다. 프로그램이 가로 방향 인 경우 슬래시 유형은 단순히 서수 모드로 변경되어 IP가 이미 진행중인 것과 동일한 왼쪽 / 오른쪽 방향으로 전송됩니다. 프로그램이 세로 방향 인 경우 IP가 약간 더 많이 튀어 나오지만 두 개의 슬래시를 모두 만들면 같은 결과가 나타납니다. (두 개의 백 슬래시는 반대 결과를 제공하며 각각 하나는 무한 루프를 만듭니다.)

프로그램의 나머지 부분은 간단합니다. 서수 모드의 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는이 도전에 재미있었습니다. 각 회전 / 리버설은 고유 한 프로그램입니다. 프로그램 실행 경로 중 일부는 다른 것보다 훨씬 흥미 롭습니다.

나는 이것을 생각해내는 것이 아마도 예상보다 오래 걸렸다는 것을 인정할 것이다. 나는 Hexagony에서 짧은 대답을 할 수 있다고 확신합니다. 행운을 빕니다!



6

APL (dzaima / APL) , 181 바이트

프로그램에는 회전 대칭이 있으므로 두 경우 만 확인하면됩니다.


왼쪽

⍝⍝⍝⍝⍝⍝⍝  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 프로그램이므로 매우 간단합니다. 흥미로운 것으로 생각되는 트릭 하나만 사용합니다.

모든 주석을 제거하여 시작하면 다음과 같은 프로그램이 나타납니다.

왼쪽

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

권리

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

왼쪽 프로그램에서 시작하여 세 가지 작업을 수행합니다.

  1. 'lef'변수에 할당t

  2. 변수 t와 문자를 인쇄't'

  3. 'righ'변수에 할당t

이제는 올바른 프로그램이기 때문에 올바른 프로그램은이 세 단계를 수행하지만 반대 순서로 수행됩니다. 이것은 우리 'left'가 왼쪽 프로그램과 'right'오른쪽 프로그램을 위해 인쇄한다는 것을 의미합니다 .

여기서 한 가지 요령은 't'실제로 코드의 회전 사본에서 나온다는 것입니다. 코드의 세 번째 열을 보면 코드가임을 알 수 있습니다 't'. 우리는 이것을 't'회전 버전에서 재사용 하여 t필요한 것을 추가 합니다.


5

하스켈 , 461 379 바이트

Ørjan Johansen이 저장 한 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--

온라인으로 사용해보십시오!

시작입니다. 이상적이지는 않지만 여기에는 몇 가지 흥미로운 일이 있습니다. 하스켈은 확실히이 도전에 흥미로운 언어입니다. 나는 이것이 내 것이거나 다른 사람의 것보다 우월한 답변을 기대합니다.



4

프롤로그 (SWI) , 649188 바이트

풀리지 않은, 회전되지 않은

:-%    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

파이썬 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 바이트

Ørjan Johansen 덕분에 -276 바이트

// ////////////;/;/////////// //
// ////////////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//////////// //
// ///////////;/;//////////// //

온라인으로 "왼쪽"을보십시오!

온라인으로 "올바로"보십시오!

여러 가지 이유로 어려웠습니다.

  • 정리 하려면 파일 module <filename>시작 부분에 파일 헤더 가 있어야 하며 파일 시작 부분 에만 있어야합니다. 불행하게도, 이것은 미러링 된 프로그램의 회전이 유효하기 위해서는 파일의 맨 아래에도 나타나야한다는 것을 의미합니다. 이것을 악화시키기 위해서는 module ..글로벌에 유효하지 않습니다.let .. in , where ..with ..정의 . module정의되지 않은 토큰이 표시되면 오류가 발생합니다.
  • 블록 주석과 라인 주석 모두 중첩됩니다. /* /* */ 한 레벨의 주석을 열어 /* // */두고 나머지 라인은 주석 처리합니다.
  • 동일한 기능을 여러 번 정의 할 수 있지만 그 직후에만 가능합니다.

운 좋게도, 우리 (앞에서) 식 module으로 무언가를 정의 할 있는데 #.., 이것이 우리에게 필요한 전부입니다. Clean은 결코 사용되지 않는 대안 (및 동일하게 사용되지 않는 다양한 다른 것)을 유형 검사하지 않으므로 필수 두 번째 정의는 Start완전한 쓰레기 일 수 있습니다. 이것은 우리가 두 번째를 사용할 수 Start있기 때문에 청소 취급 파일의 맨 아래에있는 모듈 헤더를 소비 m module m함수 호출로 mmodulem(우리가 정의 했으므로 module하고 m, 오류가 발생하지 않습니다를). 그 문제가되지 않습니다 m때문에, 문자열이 아닌 기능입니다 Start대안 타입 검사 한 적도 없구요.

컴파일러의 눈으로 살펴보면 쉽게 볼 수 있습니다.

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

1
1055 병합 ms.
Ørjan Johansen

@OrjanJohansen Oooh 멋진 캐치!
Ο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

루비 , 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#########

온라인으로 사용해보십시오!

이것은 Ruby에 대한 Curtis Bechtel의 Python 답변 포트이며 조금 더 골프를 쳤다.

사실, 그의 파이썬 프로그램은 폴리 글롯이며 루비에서도 실행되므로 첫 번째 답변은 복사 붙여 넣기이지만 불공평 해 보였습니다. 그래서 기본 스크립트에서 시작하여 새로운 답변을 생성하는 스크립트를 작성했습니다. 여기에서 시도해 볼 수 있습니다.

나만의 빌드


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 :는 주석과 같은 레이블을 나타내는 데 사용되므로 프로그램이 회전 대칭을 가지므로 두 버전 사이의 유일한 차이점 @은 첫 번째 라인 중 어느 것이 첫 번째인지, left또는right 출력 스크립트 앞에있는 종료합니다.

회전 된 선을 서로 창의적으로 겹 치려고했지만 실제로 시도는 더 큰 격자로 끝났습니다.

편집 : @ ØrjanJohansen 덕분에 117 바이트를 절약했습니다.


나는 당신이 바꿀 수 있다고 생각 &rem 하여 &:.
Ørjan Johansen

@ ØrjanJohansen 나는 비슷한 도전에 앞서 그것을 시도했던 것을 기억하는 것 같지만, 그것이 잘 작동하지 않았다고 생각합니다.
Neil

이것은test.bat Win10 명령 프롬프트에서와 같이 저에게 도움 이되었습니다 (Haskell, TIO는 배치가없는 것 같습니다) .
Ørjan Johansen

@ ØrjanJohansen Fair, 충분히 이전 버전의 버그 일 수 있습니다 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 Johansen

@ ØrjanJohansen 두 번째로, 그들은 결코 도달하지 못했습니다. 따라서 기술적으로 실제로 작동하지 않습니다 (대개 대답에서 무시되는 모든 코드에 일반적으로 사용되는 용어입니다). 이 코드는 새로운 버전의 05AB1E에서도 작동하지 않습니다. 코드를 먼저보고 (컴파일 정렬 한 후) 실행하기 때문입니다. 레거시 버전이 실행되기 시작한 것 같습니다. 이것이 내가 (legacy)05AB1E 의 버전을 사용하도록 지정한 이유 입니다.
Kevin Cruijssen


1

룬 마법 , 116 바이트

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

온라인으로 사용해보십시오!

그리고 반대로

포트는 아니지만 두 언어의 일반적인 호환 가능성을 고려할 때 Post Left Garf Hunter의 Klein 000 답변 을 출발점으로 활용했습니다 (대부분의 명령은 동일하고 Runic의 가장자리 배치는 Klein 000과 동일합니다). 유일한 문제는 클라인 IP가 항상 왼쪽 상단에서 시작하고 Runic은 그렇지 않다는 것입니다. 따라서 .모두 원래 코드의 일부이며 Runic에 의해 NOP로 처리되는 반면 흐름 제어의 일부로 추가 해야하는 NOP입니다.

"left"4 회전 모두 인쇄"right" 미러링시 (및 합니다. 수정 후 두 개의 가운데 열이 완전히 사용되지 않아 제거 할 수있었습니다.

이론적으로 후행 공백이 많은 회전은 더 적은 바이트 수 (예 : 이 변형 )에 사용될 수 있지만 외부 도구를 사용하여 구조를 올바르게 회전하려면 공백이 필요하므로 포함했습니다.

아래 변형에는 제거되었지만 사용되지 않은 청크가 포함되어 있습니다.

네 개의 모든 왼쪽 . 출력 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 축을 가로 지르는 것을 제외하고 기술적으로 대칭이므로 뒤집을 때 대신 "RIGHT"를 반환합니다 !!!

이 프로그램을 가능하게 한 캐릭터는 'A'로 특정 라인의 시작 부분으로 순간 이동할 수 있습니다!

온라인으로 사용해보십시오!


1
수직 및 수평 반사는 회전 후 동일하기 때문에 차이가 없어야합니다.
밀 마법사

@TRITICIMAGVS 허가, 그 생각을하지 않았다, 감사는 아웃 지적에 대해,도 그냥 농담의 크기는 27 바이트했다 하나 만들어,이 모든 게 무의미 실현
KrystosTheOverlord

1
네, 그 과정을 즐겼다면 항상 그만한 가치가 있다고 생각합니다.
밀 마법사
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.