HexaGolf: Rotatagons


15

ดูเพิ่มเติม: Wordagons

ท้าทาย

กำหนดรูปหกเหลี่ยมและในจำนวนที่nเป็น input เอาท์พุทหกเหลี่ยมเดียวกันหมุน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 องศาเพื่อให้ได้มุมการหมุน ตัวอย่างเช่นการใช้รูปหกเหลี่ยมด้านบนถ้าnเป็น 2 เราจะคูณมันด้วย 60 เพื่อให้ได้ 120 องศา จากนั้นเราหมุนรูปหกเหลี่ยม 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 คุณยังไม่เห็นว่าคะแนนของพวกเขาอันตรายแค่ไหน? ;)
เบต้าการสลายตัว

เราสามารถรับอินพุตเป็นรายการบรรทัดได้หรือไม่? เราสามารถสมมติว่าอินพุตเป็นช่องว่างได้หรือไม่?
ลินน์

1
มีความเกี่ยวข้องกันมาก: codegolf.stackexchange.com/q/51964/15599
เลเวลริเวอร์เซนต์

1
ฉันหายไปไม่กี่นาทีพยายามที่จะ SmartAss กับ CSS transform:rotate(x)แบบ' ปรากฎว่าไม่ใช่ความคิดที่สดใสใครจะรู้?
แอรอน

คำตอบ:


1

Perl, 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

ในที่สุดได้เมทริกซ์การหมุนที่จะสั้นกว่าวงคู่เก่า


ฉันต้องเพิ่มaและตั้งnค่าสถานะเพื่อให้สิ่งนี้ใช้งานได้
Neil

1
@ Neil นั่นเป็นสิ่งจำเป็นเฉพาะในรุ่น Perl เก่า ใน perls ล่าสุด-Fหมายถึง-aและ-aในทางกลับกัน-n
Ton Hospel

14

Python 2, 160 158 156 148 124 bytes

เตรียมที่จะประหลาดใจ! ข้อความที่เกิดขึ้นจะถูกวาดบนผืนผ้าใบ ... โดยTurtle! : 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

ลองออนไลน์ - รองรับการหมุนทศนิยมเช่นกัน!


t.shape("turtle")หากคุณต้องการเต่าที่จะมีรูปร่างเหมือนหนึ่งคุณสามารถเพิ่มบรรทัด

ดูประวัติการแก้ไขเพื่อดูรุ่นที่ผ่านมา

นามแฝงที่ใช้ :

up() - penup()

rt() - right()

lt() - left()

fd() - forward()

bk() - backward()

ขอบคุณSherlock9สำหรับคำแนะนำ !


2
อีก 7 จนกว่าคุณจะชนะหลามมาตรฐาน!
Rɪᴋᴇʀ

@EasterlyIrk ถ้าใช้t.write('\n')งานได้เฉพาะ...
mbomb007

@ElylyIrk ถ้าฉันสามารถลบt.up()ได้ฉันจะไปที่นั่น
mbomb007

ยินดีด้วย! คุณกำลังเต้นงูหลามธรรมดา!
Rɪᴋᴇʀ

6

Python 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

JavaScript (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.