HexaGolf: Rotatagons


15

Xem thêm: Wordagons

Thử thách

Cho một hình lục giác và một số nlàm đầu vào, xuất ra cùng một nthời gian xoay hình lục giác .

Hình lục giác

Hình lục giác sẽ là một chuỗi như vậy:

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

Hình lục giác sẽ luôn đều và sẽ chỉ chứa các ký tự ASCII có thể in được:

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

Vòng xoay

Để tìm bao nhiêu để xoay hình lục giác bằng cách, nhân nvới 60 độ để có được góc xoay. Ví dụ: sử dụng hình lục giác ở trên, nếu nlà 2, chúng ta nhân số đó với 60 để có được 120 độ. Sau đó, chúng ta xoay hình lục giác 120 độ:

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

Lưu ý rằng mỗi bên đã di chuyển hai bên theo chiều kim đồng hồ.

Nếu nlà dương, bạn nên xoay hình lục giác theo chiều kim đồng hồ. Nếu nlà âm, bạn nên xoay hình lục giác ngược chiều kim đồng hồ.

n sẽ luôn là một số nguyên trong phạm vi -6 đến 6.

Ví dụ

Đầu vào:

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

n = 3

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

Đầu vào:

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

n = -1

Đầu ra:

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

Đầu vào:

   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

Đầu ra:

   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

Chiến thắng

Chương trình ngắn nhất tính bằng byte thắng.


2
Bạn có gì để chống lại tam giác? : P
Conor O'Brien

4
@ ConorO'Brien Bạn chưa thấy điểm của họ nguy hiểm đến mức nào? ;)
Beta Decay

Chúng ta có thể lấy đầu vào như một danh sách các dòng? Chúng ta có thể giả sử đầu vào là không gian đệm?
Lynn

1
Liên quan rất chặt chẽ: codegolf.stackexchange.com/q/51964/15599
Level River St

1
Tôi đã mất vài phút khi cố gắng trở thành một người thông minh với CSS ' transform:rotate(x). Hóa ra đó không phải là một ý tưởng sáng sủa, ai sẽ biết?
Aaron

Câu trả lời:


1

Perl, 120 119 113 107 104 102 byte

Bao gồm +6 cho -0pXi

Chạy với hình lục giác trên STDIN (được đệm bằng khoảng trắng để tất cả các dòng có cùng độ dài) và số lần quay sau -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

Cuối cùng có ma trận xoay ngắn hơn vòng lặp kép cũ


Tôi đã phải thêm ancờ để làm việc này.
Neil

1
@Neil Điều đó chỉ cần trên các phiên bản perl cũ. Trong các ẩn -Fý gần đây ngụ ý -a-alần lượt ngụ ý-n
TonMedel

14

Python 2, 160 158 156 148 124 byte

Chuẩn bị để được ngạc nhiên! Văn bản kết quả được vẽ trên một khung vẽ ... bởi aTurtle! : D

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

Dùng thử trực tuyến - Hỗ trợ xoay thập phân là tốt!


Nếu bạn muốn con rùa có hình dạng giống nhau, bạn có thể thêm dòng t.shape("turtle").

Xem lịch sử sửa đổi để xem các phiên bản trong quá khứ.

Bí danh được sử dụng :

up() - penup()

rt() - right()

lt() - left()

fd() - forward()

bk() - backward()

Cảm ơn Sherlock9 vì những gợi ý !


2
7 lần nữa cho đến khi bạn đánh bại con trăn tiêu chuẩn!
Rɪᴋᴇʀ

@EasterlyIrk Nếu chỉ t.write('\n')hoạt động ...
mbomb007

@EasterlyIrk Nếu tôi có thể xóa t.up(), tôi sẽ ở đó.
mbomb007

Chúc mừng! Bạn đang đánh con trăn bình thường!
Rɪᴋᴇʀ

6

Python 2.7, 151 byte

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)

Thí dụ:

% 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 Điều đó sẽ không hoạt động vì thứ tự các thao tác, phép trừ sẽ xảy ra trước khi bẻ khóa.
FryAmTheEggman

1

JavaScript (ES6), 130 127 byte

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

Ban đầu dựa trên câu trả lời của tôi để Xoay một viên kim cương mặc dù bây giờ tôi có thể viết lại câu trả lời đó dọc theo dòng của câu trả lời này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.