Хіральна головоломка


45

Форма хіральна якщо жодна кількість обертів не може зробити так, що це дзеркальне зображення. У цій загадці ми будемо писати хіральні комп’ютерні програми.

Для цієї головоломки ми будемо розглядати програму як прямокутну матрицю символів. Тому такі рішення цього завдання повинні бути прямокутними (тобто всі лінії повинні бути однакової довжини). Ми можемо обертати ці програми з кроком на чверть обороту. Наприклад програма

The quickish fish
    lept deftly  
  rightwards     

При обертанні на чверть обороту за годинниковою стрілкою виглядає так

  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 Я використовував це разом із блоковими командами та :set virtualedit=allрежимом Vim . Початковий Boolвихід перевіряє, чи є вхід рівним його власним обертанням, що спрощує речі. Видалення {-змушує друкувати відображений вхід.
Ørjan Johansen

@ ØrjanJohansen Дякую, що справді допомагає, до цього часу я перевертав екран свого ноутбука, думав про те, яким буде результат, і намагаюся зрозуміти, як його повернути !!!
KrystosTheOverlord

Відповіді:


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
Це схоже на обрамлене дзеркало!
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"@\.

Спробуйте в Інтернеті!


10

Кляйн (000) , 27 25 байт

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

Спробуйте в Інтернеті! Повернувся один раз! Обертається двічі! Обертається три рази!

І перевернув: Спробуйте онлайн! Повернувся один раз! Обертається двічі! Тричі обертається!

Єдиний, який доставив мені клопот, - це перевернутий та повернутий один раз, який виглядає так:

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

Це єдина причина для двох наборів ((.


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"@до друку.

Три чверті черга

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

Розмір 38x38 24x24 22x22 21x21 18x18 17x17 16x16, 4-кратні симетрії.

Тут виникає питання - чи можна мати розмір 15x15 або менше для JS? Здається, що мені потрібно як мінімум роздільник коментарів між двома підблоками та на краю, тож принаймні 7 + 2 + 2 + 5 = 16 рядків?


@JoKing О, це здається практичним. Я б спробував;)
Шиеру Асакото

@JoKing Опустився до 21x21, спасибі;)
Шиеру Асакото


8

Гол> <> , 23 байти

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

Спробуйте в Інтернеті!

Це той самий формат, що і моя відповідь Кляйна , але на 2 байти коротший. Можливо, є ще одна двовимірна мова, яка може переграти останні два байти… Але поки що це так коротко, як це стає.


oof, я щойно провів минулу годину, роблячи це в gol> <>, а потім прокручую вниз, щоб знайти це. Хороша робота, хоча!
KrystosTheOverlord

7

Аліса , 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 ° і перевернутий

Шестикутник був для цього виклику задоволенням, тому що обертання або переворот може кардинально змінити фактичну програму. Кожне обертання / розворот - це своя унікальна програма. Деякі шляхи виконання програми набагато цікавіші, ніж інші.

Я визнаю, що придумати це зайняло більше часу, ніж, мабуть, повинно було. Я впевнений, що коротшу відповідь можна зробити в шестикутнику, тож удачі!



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

Haskell , 461 379 байт

82 байти врятував Ørjan Johansen

--_----------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 байт (19x19)
Ørjan Johansen

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

Prolog (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 Johansen

// ////////////;/;/////////// //
// ////////////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як виклик функції mна moduleі m(що , так як ми визначили moduleі m, не викликає помилку). Не має значення, що mце рядок, а не функція, оскільки Startальтернатива ніколи не перевіряється тип.

Це легше зрозуміти, якщо подивитися на це очима компілятора:

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

1
1055 злиття mі s.
Ørjan Johansen

@ ØrjanJohansen Oooh приємний вилов!
Οurous

3

Брахілог , 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

Скористається тим, що Брахілог використовує головний предикат як той, що знаходиться в першому рядку, і не дуже дбає про інші рядки, крім того, щоб вимагати їх компіляції. Якщо не відображено, він друкує порожній рядок з наступним «лівим» на тому ж рядку, а відображений він друкує порожній рядок з наступним «правою» на тому ж рядку. Я спокушаюся думати, що може бути спосіб (не корисно) зробити неквадратичну версію, використовуючи , але це може бути дуже хитро, не намагаючись змусити її працювати по-іншому під роздумом.


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#########

Спробуйте в Інтернеті!

Це порт відповіді Пітіна Кертіса Бехтеля на Рубі, трохи більше гольфу.

Власне, його програма 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 :використовується для позначення мітки, що так само добре, як коментар, тому що програма має обертальну симетрію, єдиною різницею між двома версіями є те, хто з @рядків є першим, і в цьому випадку leftабоright виводиться перед сценарієм виходи.

Я намагався творчо перекривати обертові лінії між собою, але моя спроба фактично закінчилася більшою сіткою.

Редагувати: Збережено 117 байт завдяки @ ØrjanJohansen.


Я думаю, ви можете замінити &rem на &:.
Ørjan Johansen

@ ØrjanJohansen Я, мабуть, пам’ятаю, що пробував це раніше на подібному виклику, але я не думаю, що це спрацювало добре.
Ніл

Це (не заперечуючи Haskell, TIO, схоже, не має Batch) працювало для мене, як test.batу командному рядку Win10.
Ørjan Johansen

@ Ø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 Johansen

@ ØrjanJohansen По-друге, вони ніколи не дістаються. Тож технічно насправді не існує (це термін, який я зазвичай використовую для всього коду, який ігнорується у моїх відповідях). Це також не працює в новій версії 05AB1E, оскільки, здається, спочатку дивиться код (тип компіляції), а вже потім виконується. Тоді як версія Legacy, я думаю, тільки починає виконувати. Тому я вказав, що використовував (legacy)версію 05AB1E.
Kevin Cruijssen


1

Рунічні чари , 116 байт

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

Спробуйте в Інтернеті!

І перевернуто

Не зовсім порт, але використаний відповідь Клейна 000 Поля Лівого Гарфа Хантера в якості вихідної точки, з огляду на типову близьку сумісність двох мов (більшість команд однакові, а загортання краю в Runic є ідентичним Klein 000). Єдине питання полягало в тому, що IP-адреси Klein завжди починаються зліва вгорі, а Runic - ні. Як такі ., всі вони є частиною вихідного коду і досі трактуються як NOP від ​​Runic, тоді як NOP, які мені довелося додати, як частина контролю над потоком.

Друк "left"на всіх 4 -х обертань і"right" при дзеркальному відображенні (і у всіх чотирьох обертаннях). Два мої середні стовпчики були повністю використані після моїх модифікацій, тому я зміг їх видалити.

Теоретично обертання з великою кількістю пробільних пробілів можна використовувати для нижчого числа байтів (наприклад, цей варіант ), проте пробіли потрібні для правильного обертання структури за допомогою зовнішніх інструментів, і тому я включив їх.

Нижче наведені варіанти містять невикористані шматки, які були вилучені, але інакше ідентичні:

Усі чотири ліви . Результати leftleftleftleft(той факт, що всі чотири можна запустити так, це збіг).

Правий 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 Так, не думав про це, дякую, що я вказав на це, також я просто зрозумів, що вся ця справа є безглуздою, JoKing зробив один розміром 27 байт
KrystosTheOverlord

1
Е, я думаю, що це завжди варто, якщо вам сподобався процес.
Пшеничний майстер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.