HexaGolf: Rotagonlar


15

Ayrıca bakınız: Wordagons

Meydan okuma

Bir altıgen ve ngiriş olarak bir sayı verildiğinde , aynı altıgen döndürülmüş nsüreleri çıktılayın .

Altıgen

Altıgen şöyle bir dize olacaktır:

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

Altıgen her zaman düzenli olacak ve yalnızca yazdırılabilir ASCII karakterlerini içerecektir:

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

rotasyon

Altıgenin ne kadar döndürüleceğini nbulmak için, dönme açısını elde etmek için 60 derece ile çarpın . Örneğin, yukarıdaki altıgeni kullanarak n, 2 ise , 120 derece elde etmek için bunu 60 ile çarpıyoruz. Sonra altıgeni 120 derece döndürürüz:

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

Her bir tarafın iki tarafı saat yönünde hareket ettirdiğine dikkat edin .

Eğer nolumlu, sen altıgen saat yönünde döndürmek gerekir. Eğer nnegatif ise, sen altıgen saatin tersi yönde döndürmek gerekir.

n her zaman -6 ile 6 arasında bir tamsayı olacaktır.

Örnekler

Giriş:

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

n = 3

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

Giriş:

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

n = -1

Çıktı:

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

Giriş:

   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

Çıktı:

   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

Kazanan

Bayt cinsinden en kısa program kazanır.


2
Üçgenlere karşı neyin var? : P
Conor O'Brien

4
@ ConorO'Brien Puanlarının ne kadar tehlikeli olduğunu görmedin mi? ;)
Beta Çürümesi

Girdileri satır listesi olarak alabilir miyiz? Girdinin boşluk dolgusu olduğunu varsayabilir miyiz?
Lynn


1
CSS ile zeki olmaya çalışan birkaç dakika kaybettim transform:rotate(x). Bunun parlak bir fikir olmadığı anlaşılıyor, kim bilebilirdi?
Aaron

Yanıtlar:


1

Perl, 120 119 113 107 104 102 bayt

İçin +6 içerir -0pXi

Altıgen STDIN (tüm satırlar aynı uzunlukta olacak şekilde boşluklarla doldurulmuş) ve -i'den sonraki dönüş sayısı ile çalıştırın.

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

Sonunda dönme matrisinin eski çift döngüden daha kısa olmasını sağladı


Bunu işe almak için ave nbayrakları eklemek zorunda kaldı .
Neil

1
@Neil Bu sadece eski perl sürümlerinde gereklidir. Son perls -Fima -ave -asırayla-n
Ton Hospel

14

Python 2, 160 158 156 148 124 bayt

Şaşırmaya hazır olun! Ortaya çıkan metin bir tuval üzerine çizilir ... tarafındanTurtle! : 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

Çevrimiçi deneyin - Ondalık dönüşleri de destekler!


Kaplumbağanın bir tane gibi olmasını tercih ederseniz, çizgiyi ekleyebilirsiniz t.shape("turtle").

Geçmiş sürümleri görmek için düzeltme geçmişini görüntüleyin.

Kullanılan takma adlar :

up() - penup()

rt() - right()

lt() - left()

fd() - forward()

bk() - backward()

Sayesinde Sherlock9 için önerileri !


2
Standart python'u yenene kadar 7 tane daha!
Rɪᴋᴇʀ

@EasterlyIrk Sadece t.write('\n')çalıştıysa ...
mbomb007

@EasterlyIrk Çıkarabilseydim t.up(), orada olurdum.
mbomb007

Tebrikler! Normal pitonu dövüyorsun!
Rɪᴋᴇʀ

6

Python 2.7, 151 bayt

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)

Misal:

% 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 Bu işlemlerin sırası nedeniyle çalışmaz, çıkartma bit bitmeden önce olur.
FryAmTheEggman

1

JavaScript (ES6), 130 127 bayt

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

Başlangıçta bir elmas fayans döndürmek için verdiğim cevaba dayanarak, şimdi bu cevabı satırlar boyunca bu cevabı yeniden yazabiliyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.