HexaGolf : Rotatagons


15

또한보십시오 : Wordagons

도전

n입력 으로 육각형과 숫자가 주어지면 동일한 육각형 회전 n시간을 출력합니다 .

육각형

육각형은 다음과 같은 문자열이됩니다.

  a b c
 d d e e
f f o g g
 h h i i
  j k l

육각형은 항상 규칙적이며 인쇄 가능한 ASCII 문자 만 포함합니다.

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

회전

육각형을 얼마나 많이 회전 시키려면 회전 n각도를 얻기 위해 60도를 곱 하십시오. 예를 들어 위의 육각형을 사용하면 n2 인 경우 120을 곱하기 위해 60을 곱합니다. 그런 다음 육각형을 120도 회전시킵니다.

  j h f
 k h f d
l i o d a
 i g e b
  g e c

양쪽이 이동 한 것을 참고 방향으로 변.

경우 n긍정적, 당신은 육각 시계 방향으로 회전한다. 경우 n음, 당신은 육각 시계 반대 방향으로 회전한다.

n 항상 -6에서 6 사이의 정수입니다.

입력:

  . u .
 .  |  .
l - + - r
 .  |  .
  . d .

n = 3

  . d .
 .  |  .
r - + - l
 .  |  .
  . u .

입력:

  - - -
 /     \
<       >
 \     /
  - - -

n = -1

산출:

  - \ >
 -     /
-       -
 /     -
  < \ -

입력:

   h e x a
  g o n s a
 n d t r i a
n g l e s m a
 k e m e s a
  d l y m a
   d d e r

n = 6

산출:

   h e x a
  g o n s a
 n d t r i a
n g l e s m a
 k e m e s a
  d l y m a
   d d e r

승리

바이트 단위의 최단 프로그램이 이깁니다.


2
삼각형에 대해 무엇을 가지고 있습니까? : P
Conor O'Brien

4
@ ConorO'Brien 그들의 포인트가 얼마나 위험한지 보지 못했습니까? ;)
Beta Decay

줄 목록으로 입력 할 수 있습니까? 입력이 공백으로 채워져 있다고 가정 할 수 있습니까?
Lynn


1
CSS로 smartass가 되려고 몇 분을 잃었습니다 transform:rotate(x). 그게 좋은 생각이 아니라고 누가 알았 을까요?
Aaron

답변:


1

120 119 113 107 104 102 바이트

에 +6 포함 -0pXi

STDIN의 육각형 (공백으로 채워져 모든 선의 길이가 동일 함)과 -i 이후의 회전 수로 실행합니다.

perl -0pXi1 rotagon.pl 
  a b c
 d d e e
f f o g g
 h h i i
  j k l
^D

rotagon.pl

s!(.)!$X=(3*($w=y/
//*2)/4+($-="@-"/$w)-"@+"%$w)/2*--$w+2*$--.25;/^\C{$X}(.)/;$1!eg while$^I--%6

마지막으로 회전 행렬이 이전 이중 루프보다 짧아졌습니다.


이것을 작동시키기 위해 aand n플래그 를 추가 해야했습니다.
Neil

1
@Neil 그것은 오래된 펄 버전에서만 필요합니다. 최근 perls에서 -F암시 -a하고 -a암시-n
Ton Hospel

14

파이썬 2 160 158 156 148 124 바이트

놀랄 준비를하십시오! 결과 텍스트는 캔버스에 그려집니다Turtle. :디

from turtle import*
h,n=input()
up()
rt(n*60)
l=0
for c in h:
 write(c);fd(9);l-=1
 if" ">c:fd(9*l);rt(90);fd(15);lt(90);l=0

온라인으로 시도 -십진 회전도 지원합니다!


거북이 모양의 거북이를 원한다면 선을 추가 할 수 있습니다 t.shape("turtle").

이전 버전을 보려면 개정 내역을보십시오.

사용 된 별칭 :

up() - penup()

rt() - right()

lt() - left()

fd() - forward()

bk() - backward()

제안에 대해 Sherlock9 에게 감사드립니다 !


2
표준 파이썬을 이길 때까지 7 더!
Rɪᴋᴇʀ

@EasterlyIrk 만약 t.write('\n')작동 한다면 ...
mbomb007

@EasterlyIrk 제거 할 수 있으면 내가 t.up()거기있을 것입니다.
mbomb007

축하합니다! 당신은 정상적인 파이썬을 치고 있습니다!
Rɪᴋᴇʀ

6

파이썬 2.7, 151 바이트

h,n=input()
s=1-len(h)
e=enumerate
exec n%6*"h=[''.join(c>' 'and h[y-x-3*s/2>>1][x*2+y*6+s>>2]or c for x,c in e(l))for y,l in e(h)];"
print'\n'.join(h)

예:

% python2.7 hexarot.py <<<'[["   h e x a   ","  g o n s a  "," n d t r i a ","n g l e s m a", " k e m e s a ","  d l y m a  ","   d d e r   "],-1]'
   a a a a   
  x s i m a  
 e n r s s a 
h o t e e m r
 g d l m y e 
  n g e l d  
   n k d d

@ mbomb007 연산 순서로 인해 작동하지 않으므로 비트 쉬프트 전에 빼기가 발생합니다.
FryAmTheEggman

1

자바 스크립트 (ES6) 130 127 바이트

f=(s,n)=>n%6?f(s.split`
`.map((s,i,a)=>s.replace(/./g,(c,j)=>(a[(i+z-j)/2+z]||c)[(i+j-z)/2+i]||c,z=a.length>>1)).join`
`,n-1):s

원래 는 다이아몬드 타일링 회전 에 대한 내 대답을 기반으로 하지만이 답변의 라인을 따라 해당 답변을 다시 쓸 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.