เพชรตัวอักษร


31

คุณเคยเห็นรูปสามเหลี่ยมตัวอักษรที่น่าทึ่งการแก้แค้นของรูปสามเหลี่ยมตัวอักษรและตอนนี้ถึงเวลาสำหรับการแก้แค้นของรูปสามเหลี่ยมตัวอักษร!

แนะนำ ...

เพชรอัลฟาเบ็ท!

งานของคุณคือการส่งออกข้อความที่แน่นอนนี้ตัวพิมพ์เล็ก / ตัวพิมพ์ใหญ่ไม่สำคัญแม้ว่าบรรทัดใหม่ทำ:

bcdefghijklmnopqrstuvwxyzazyxwvutsrqponmlkjihgfedcb
cdefghijklmnopqrstuvwxyzabazyxwvutsrqponmlkjihgfedc
defghijklmnopqrstuvwxyzabcbazyxwvutsrqponmlkjihgfed
efghijklmnopqrstuvwxyzabcdcbazyxwvutsrqponmlkjihgfe
fghijklmnopqrstuvwxyzabcdedcbazyxwvutsrqponmlkjihgf
ghijklmnopqrstuvwxyzabcdefedcbazyxwvutsrqponmlkjihg
hijklmnopqrstuvwxyzabcdefgfedcbazyxwvutsrqponmlkjih
ijklmnopqrstuvwxyzabcdefghgfedcbazyxwvutsrqponmlkji
jklmnopqrstuvwxyzabcdefghihgfedcbazyxwvutsrqponmlkj
klmnopqrstuvwxyzabcdefghijihgfedcbazyxwvutsrqponmlk
lmnopqrstuvwxyzabcdefghijkjihgfedcbazyxwvutsrqponml
mnopqrstuvwxyzabcdefghijklkjihgfedcbazyxwvutsrqponm
nopqrstuvwxyzabcdefghijklmlkjihgfedcbazyxwvutsrqpon
opqrstuvwxyzabcdefghijklmnmlkjihgfedcbazyxwvutsrqpo
pqrstuvwxyzabcdefghijklmnonmlkjihgfedcbazyxwvutsrqp
qrstuvwxyzabcdefghijklmnoponmlkjihgfedcbazyxwvutsrq
rstuvwxyzabcdefghijklmnopqponmlkjihgfedcbazyxwvutsr
stuvwxyzabcdefghijklmnopqrqponmlkjihgfedcbazyxwvuts
tuvwxyzabcdefghijklmnopqrsrqponmlkjihgfedcbazyxwvut
uvwxyzabcdefghijklmnopqrstsrqponmlkjihgfedcbazyxwvu
vwxyzabcdefghijklmnopqrstutsrqponmlkjihgfedcbazyxwv
wxyzabcdefghijklmnopqrstuvutsrqponmlkjihgfedcbazyxw
xyzabcdefghijklmnopqrstuvwvutsrqponmlkjihgfedcbazyx
yzabcdefghijklmnopqrstuvwxwvutsrqponmlkjihgfedcbazy
zabcdefghijklmnopqrstuvwxyxwvutsrqponmlkjihgfedcbaz
abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba
bcdefghijklmnopqrstuvwxyzazyxwvutsrqponmlkjihgfedcb
abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba
zabcdefghijklmnopqrstuvwxyxwvutsrqponmlkjihgfedcbaz
yzabcdefghijklmnopqrstuvwxwvutsrqponmlkjihgfedcbazy
xyzabcdefghijklmnopqrstuvwvutsrqponmlkjihgfedcbazyx
wxyzabcdefghijklmnopqrstuvutsrqponmlkjihgfedcbazyxw
vwxyzabcdefghijklmnopqrstutsrqponmlkjihgfedcbazyxwv
uvwxyzabcdefghijklmnopqrstsrqponmlkjihgfedcbazyxwvu
tuvwxyzabcdefghijklmnopqrsrqponmlkjihgfedcbazyxwvut
stuvwxyzabcdefghijklmnopqrqponmlkjihgfedcbazyxwvuts
rstuvwxyzabcdefghijklmnopqponmlkjihgfedcbazyxwvutsr
qrstuvwxyzabcdefghijklmnoponmlkjihgfedcbazyxwvutsrq
pqrstuvwxyzabcdefghijklmnonmlkjihgfedcbazyxwvutsrqp
opqrstuvwxyzabcdefghijklmnmlkjihgfedcbazyxwvutsrqpo
nopqrstuvwxyzabcdefghijklmlkjihgfedcbazyxwvutsrqpon
mnopqrstuvwxyzabcdefghijklkjihgfedcbazyxwvutsrqponm
lmnopqrstuvwxyzabcdefghijkjihgfedcbazyxwvutsrqponml
klmnopqrstuvwxyzabcdefghijihgfedcbazyxwvutsrqponmlk
jklmnopqrstuvwxyzabcdefghihgfedcbazyxwvutsrqponmlkj
ijklmnopqrstuvwxyzabcdefghgfedcbazyxwvutsrqponmlkji
hijklmnopqrstuvwxyzabcdefgfedcbazyxwvutsrqponmlkjih
ghijklmnopqrstuvwxyzabcdefedcbazyxwvutsrqponmlkjihg
fghijklmnopqrstuvwxyzabcdedcbazyxwvutsrqponmlkjihgf
efghijklmnopqrstuvwxyzabcdcbazyxwvutsrqponmlkjihgfe
defghijklmnopqrstuvwxyzabcbazyxwvutsrqponmlkjihgfed
cdefghijklmnopqrstuvwxyzabazyxwvutsrqponmlkjihgfedc
bcdefghijklmnopqrstuvwxyzazyxwvutsrqponmlkjihgfedcb

นี่คือรหัสกอล์ฟซึ่งเป็นจำนวนผู้ชนะต่ำสุด

กฎ:

  1. ช่องโหว่มาตรฐานไม่ได้รับอนุญาต
  2. a จะต้องเป็นศูนย์กลางของเพชรตัวอักษร

11
ความท้าทายที่ดี โดยส่วนตัวฉันคิดว่ามันจะสมเหตุสมผลมากกว่าถ้ามีมุมaและศูนย์กลางคือz
ETHproductions

4
@ ETHproductions ฉันต้องการทำให้ยากขึ้นสำหรับภาษากอล์ฟที่สามารถผลักดันตัวอักษร;) แม้ว่าฉันจะสงสัยว่ามันจะยากกว่านี้มาก
Magic Octopus Urn

@carusocomputing การหมุนซ้ายจะทำ ยกตัวอย่างเช่น.<จะทำมันใน Pyth: จะส่งผลให้.<S5 1 มันเป็นเช่นเดียวกับ[2, 3, 4, 5, 1] .<[1 2 3 4 5)1ไม่แน่ใจสำหรับเพชร
Erik the Outgolfer

@EriktheGolfer ฉันรู้ว่ามีวิธีที่ฉลาดกว่าที่จะทำเช่นกันเช่นการยุบการเปลี่ยนแปลงในสิ่งที่ต้องทำ ตัวเพชรเองควรจะต้องมีการขยับดังนั้นจึงมีวิธีที่จะรวมการเปลี่ยนแปลงครั้งแรกในการทำซ้ำเพชรจริงเช่นกัน มันเป็นส่วนหนึ่งของความท้าทายโดยเจตนาเพื่อดูว่าใครเพิ่มประสิทธิภาพการวนซ้ำของพวกเขา
Magic Octopus Urn

@carusocomputing ฉันหมายเกี่ยวกับการเป็นอักษรตัวแรกแทนb aแน่นอนว่าการเปลี่ยนเป็นสิ่งสำคัญเช่นกัน
Erik the Outgolfer

คำตอบ:


16

05AB1E , 13 12 ไบต์

A27FÀDûˆ}¯û»

ลองออนไลน์!

คำอธิบาย

A              # push alphabet
 27F           # 27 times do
    À          # rotate alphabet left
     Dû        # create a palendromized copy
       ˆ       # add to global list
        }      # end loop
         ¯     # push global list
          û    # palendromize list
           »   # merge list on newline
               # implicit output

อาจบันทึกไบต์โดยใช้รีจิสเตอร์และ g เพื่อคำนวณความยาวของตัวอักษรแทนการทำซ้ำ
Magic Octopus Urn

@carusocomputing: ถ้าฉันทำผิด (รู้สึกฟรีเพื่อให้ความรู้กับฉันถ้าเป็นเช่นนั้น) ฉันลงเอยด้วยการทำอย่างนั้น ฉันจัดการเพื่อบันทึกไบต์ด้วยรายการระดับโลกว่า
Emigna

A©gF®À©û})û»คือสิ่งที่ฉันคิด คุณไม่เคยทำผิดเลย! ฉันได้เรียนรู้ทุกสิ่งที่ฉันรู้จากการดูคุณเหรอ รายการทั่วโลกเป็นแนวคิดพื้นฐานเดียวกัน
Magic Octopus Urn

1
ตอนนี้คุณผูกกับฉัน : 3
Oliver Ni

1
@Oliver: แน่นอน! และมี 2 วิธีที่แตกต่างกันในภาษาเดียวกัน :)
Emigna

27

เป็นกลุ่ม62 , 60 การกดแป้น

:se ri|h<_<cr>jjYZZPqqx$pYpq26@qdjyH:g/^/m0<cr>VP:%norm DPA<C-v><C-r>"<C-v><esc>x<cr>

วาดแรงบันดาลใจจากคำตอบที่น่ากลัวของ Lynnเพื่อรับแนวคิดในการขโมยตัวอักษรจากเอกสารช่วยเหลือ

คุณสามารถดูได้ในแบบเรียลไทม์ในขณะที่ฉันพยายามจำลำดับการกดแป้นที่ถูกต้อง!

enter image description here

โปรดทราบว่า gif นี้ล้าสมัยเล็กน้อยเพราะมันสร้างเอาต์พุตผิดและฉันยังไม่ได้ไปรอบ ๆ เพื่อทำการบันทึกอีกครั้ง


ฉันพยายามโปรแกรมนี้และได้รับนี้
LegionMammal978

กรุณาบันทึกใหม่
เฉพาะ ASCII เท่านั้น

8

MATL , 14 ไบต์

2Y226Zv27Zv!+)

ลองออนไลน์!

2Y2     % Push string 'abc...z'
26Zv    % Push symmetric range [1 2 ... 25 26 25 ... 2 1]
27Zv    % Push symmetric range [1 2 ... 25 26 27 26 25 ... 2 1]
!       % Transpose into a column
+       % Addition with broadcast. Gives a matrix of all pairwise additions:
        % [  2  3 ... 26 27 26 ...  3  2
             3  4 ... 27 28 27 ...  4  3
             ...
            27 28 ... 51 52 51 ... 28 27
            28 29 ... 52 53 52 ... 29 28
            27 28 ... 51 52 51 ... 28 27
             ...
             2  3 ... 26 27 26 ...  3  2 ]
)       % Index modularly into the string. Display implicitly

6

PHP, 129 ไบต์

for(;++$i<27;)$o.=($s=($f=substr)($r=join(range(a,z)),$i,26-$i)).$t.strrev($s.$t=$f($r,0,$i))."\n";echo$o.$f($o,0,51).strrev($o);

syntax error, unexpected '(' on line 1เวอร์ชัน php ใด
Tschallacka

1
@Tschallacka PHP> 7 ก่อนที่คุณจะสามารถเขียน for($f=substr;และ$f($r=join(range(a,z)),$i,26-$i))แทนที่จะ($f=substr)($r=join(range(a,z)),$i,26-$i))หลีกเลี่ยงข้อผิดพลาด
JörgHülsermann

5

Haskell, 75 ไบต์

g=(++)<*>reverse.init 
unlines$g$g.take 26.($cycle['a'..'z']).drop<$>[1..27]

มันทำงานอย่างไร:

g=(++)<*>reverse.init    -- helper function that takes a list and appends the
                         -- reverse of the list with the first element dropped, e.g.
                         -- g "abc"  -> "abcba"

             <$>[1..27]  -- map over the list [1..27] the function that
           drop          -- drops that many elements from
    ($cycle['a'..'z'])   -- the infinite cycled alphabet and
   take 26               -- keeps the next 26 chars and
  g                      -- appends the reverse of itself

                         -- now we have the first 27 lines

 g                       -- do another g to append the lower half
unlines                  -- join with newlines

5

C, 76 ไบต์

ฟังก์ชั่นที่จะเรียกว่าดังต่อไปนี้ พิมพ์ตัวอักษรพิมพ์ใหญ่

f(i){for(i=2756;--i;)putchar(i%52?90-(abs(i%52-26)+abs(i/52-26)+25)%26:10);}

//call like this
main(){f();}

วิธีง่าย ๆ เพิ่มระยะทาง x และ y จากกึ่งกลางของสี่เหลี่ยมจัตุรัสบวก 25 aตรงกลางตรงกลางใช้โมดูโล 26 และหักจาก90รหัส ASCII สำหรับZสำหรับ โดยที่i%52== 0 บรรทัดใหม่ ASCII 10ถูกพิมพ์


ออฟเซ็ตของคุณ+25เหมือนกับ-1ใน modulo 26
Karl Napf

2
@KarlNapf C ไม่ได้ใช้โมดูโลของตัวเลขลบอย่างที่นักคณิตศาสตร์ทำ -1%26ใน C คือ -1 ไม่ใช่ 25 ผลลัพธ์คือ a [ตรงกลางแทนที่จะเป็นที่คาดAไว้ ขอขอบคุณคุณจะได้รับการแก้ไขในภาษาเช่น Ruby ซึ่ง-1%26มีค่าเท่ากับ 25
Level River St

5

R, 71 ไบต์

cat(letters[outer(c(1:27,26:1),c(0:25,24:0),"+")%%26+1],sep="",fill=53)

outerสร้างเมทริกซ์ที่มีดัชนีของตัวอักษรletters[...]จากนั้นสร้างเวกเตอร์ที่มีตัวอักษรที่ถูกต้องcat(...,sep="",fill=53)แล้วพิมพ์ออกมาด้วยการจัดรูปแบบที่ต้องการ


1
ทำได้ดีนี่! ยังไงก็เถอะผมลืมเกี่ยวกับตัวเลือกสำหรับการfill catวิธีที่ยอดเยี่ยมในการพิมพ์เมทริกซ์ที่จัดรูปแบบแล้ว
Billywob

4

เยลลี่ขนาด 13 ไบต์

Øaṙ1ṭṙJ$ŒBŒḄY

ลองออนไลน์!

คำอธิบาย

Øaṙ1ṭṙJ$ŒBŒḄY  Main link. No arguments
Øa             Get the lowercase alphabet
  ṙ1           Rotate left by 1
    ṭ          Append to
       $       Monadic chain
      J          Indices of the alphabet [1, 2, ..., 26]
     ṙ           Rotate the alphabet by each
        ŒB     Bounce each rotation
          ŒḄ   Bounce the rotations
            Y  Join with newlines and print implicitly

Øaṙ'JŒBŒḄYสำหรับ 10 :)
Jonathan Allan

@ Jonathanathan Allan ขอบคุณ แต่นั่นก็หายไปตอนกลางซึ่งเป็นสาเหตุที่ฉันต้องทำṙ1ṭแบบนั้น นอกจากนี้ยังØaṙJŒBŒḄYเป็นเรื่องปกติคุณไม่ต้องการความรวดเร็วเนื่องจากมันทำให้เวกเตอร์ทางขวาเป็น 0
ไมล์

พลาดโดยสิ้นเชิงว่าเพชรไม่ได้สมบูรณ์แบบ! โอ้ดี ...
โจนาธานอัลลัน

4

เยลลี่ 11 ไบต์

27RØaṙŒḄŒBY

คำอธิบาย:

27R          range of 1...27
   Øa        the alphabet
     ṙ       rotate
      ŒḄŒB   bounce in both dimensions
          Y  join on newline

3

Python 2, 96 85 ไบต์

การพิมพ์เวอร์ชันตัวพิมพ์ใหญ่ (บันทึก 1 ไบต์)

R=range
for i in R(53):print''.join(chr(90-(abs(j-25)+abs(i-26)-1)%26)for j in R(51))

วิธีการแก้ปัญหาก่อนหน้าด้วยความช่วยเหลือจาก muddyfish

s="abcdefghijklmnopqrstuvwxyz"*3
for i in range(53):j=min(i,52-i);print s[j+1:j+27]+s[j+25:j:-1]

3
ไม่เพียงพิมพ์ตัวอักษรให้น้อยลง?
Blue

3

Perl, 77 ไบต์

ต้องใช้ -Eไม่มีค่าใช้จ่ายเพิ่มเติม

วิธีการมาตรฐานที่ค่อนข้างดี ... ฉันไม่ชอบการโทรเพื่อย้อนกลับฉันคิดว่าน่าจะมีวิธีการทางคณิตศาสตร์มากกว่านี้จะเห็นว่าฉันจะไปได้อย่างไร!

@a=((a..z)x3)[$_..$_+26],$a=pop@a,(say@a,$a,reverse@a)for 1..26,reverse 1..25

การใช้

perl -E '@a=((a..z)x3)[$_..$_+26],$a=pop@a,(say@a,$a,reverse@a)for 1..26,reverse 1..25'

คุณสามารถบันทึก 1 ไบต์โดยการลบช่องว่างหลังจากที่ในreverse ต้องการมันแม้ว่า reverse 1..25for
simbabque

1
@simbabque บางทีมันอาจจะเป็นสิ่งที่รุ่น Perl แต่ผลในการreverse1..25 0..25ฉันกำลังวิ่ง5.18.2...
Dom Hastings

คุณถูก. เพราะ bareword reverse1นั้นไม่ได้ถูกกำหนด มีเหตุผล.
simbabque

3

JavaScript (ES6), 97 96 ไบต์

บันทึกแล้ว 1 ไบต์ขอบคุณ @ user81655

R=(n,s=25,c=(n%26+10).toString(36))=>s?c+R(n+1,s-1)+c:c
C=(n=1,r=R(n))=>n<27?r+`
${C(n+1)}
`+r:r

สองฟังก์ชั่นวนซ้ำ; Cเป็นสิ่งที่ส่งออกข้อความที่ถูกต้อง ลองที่นี่:


@ user81655 ฉันมักจะลืมเกี่ยวกับการแก้ไขสตริงเมื่อมีการขึ้นบรรทัดใหม่: P
ETHproductions

3

Python 3, 119 ไบต์

ผมพยายามที่จะใช้ประโยชน์จากสองแกนสมมาตรของเพชร แต่เรื่องนี้จบลงด้วยการเพิ่มเติมอย่างละเอียดกว่าการแก้ปัญหาของคาร์ล Napf

A='abcdefghijklmnopqrstuvwxyz'
D=''
for k in range(1,27):
 D+=A[k:]+A[:k]
 D+=D[-2:-27:-1]+'\n'
print(D+D[:51]+D[::-1])

ทางออกที่ดีอย่างไรก็ตาม! คุณสามารถลดขนาด 3 ไบต์ลงโดยเขียน for for loop ใน 1 บรรทัด:for k in range(1,27):D+=A[k:]+A[:k];D+=D[-2:-27:-1]+'\n'
FlipTack

สั้นลงอีกครั้ง: แทนที่ด้วย'bcdefghijklmnopqrstuvwxyza'และแทนที่ด้วยrange(1,27) จำนวนไบต์ของฉันคือ 114range(26)
FlipTack


3

C, 252 ไบต์

#define j q[y]
#define k(w,v) (v<'z')?(w=v+1):(w=97)
char q[28][52],d;main(){int y,x=1;y=1;j[0]=98;j[50]=98;for(;y<27;y++){for(;x<26;x++){(x<1)?(k(d,q[y-1][50])):(k(d,j[x-1]));j[50-x]=d;j[x]=d;}x=0;j[51]=0;puts(j);}strcpy(j,q[1]);for(;y;y--)puts(j);}

ฟอร์แมตเป็นเวอร์ชันที่ขยายมาโครซึ่งหวังว่าจะเข้าใจได้ง่ายขึ้น:

#define j q[y]
#define k(w,v) (v<'z')?(w=v+1):(w=97)
char q[28][52],d;
main(){
int y,x=1;
y=1;
q[1][0]=98;q[1][50]=98;
//98 takes one less byte to type than the equivalent 'b'
for(;y<27;y++){
    for(;x<26;x++){
        (x<1)?
            (k(d,q[y-1][50]))
            :(k(d,q[y][x-1]));
        q[y][50-x]=d;
        q[y][x]=d;
        }
    x=0;
    q[y][51]=0;
    puts(q[y]);
    }
strcpy(q[y],q[1]);
for(;y;y--)puts(q[y]);
}

ฉันรู้ว่านี่ไม่สามารถชนะได้ แต่ฉันก็สนุกไปกับการลอง นี่เป็นความพยายามครั้งแรกของฉันที่การตีกอล์ฟ


ยินดีต้อนรับสู่โค้ดกอล์ฟมันคือการเสพติดฮ่าฮ่า;)
Magic Octopus Urn

3

แบตช์ 255 ไบต์

@echo off
set l=abcdefghijklmnopqrstuvwxyz
set r=yxwvutsrqponmlkjihgfedcba
for /l %%i in (1,1,27)do call:u
for /l %%i in (1,1,25)do call:l
:l
set r=%r:~2%%l:~-1%.
set l=%l:~-2%%l:~0,-2%
:u
set r=%l:~-1%%r:~0,-1%
set l=%l:~1%%l:~0,1%
echo %l%%r%

คำอธิบาย: รูทีนย่อยuหมุนตัวอักษรออกไปข้างนอกด้วยตัวอักษรหนึ่งตัวจากกึ่งกลางซึ่งเป็นรูปแบบที่ใช้ในครึ่งบนของเอาต์พุตที่ต้องการ รูทีนย่อยlหมุนตัวอักษรภายในโดยตัวอักษรสองตัว จากนั้นจะผ่านเข้าไปในuรูทีนย่อยเพื่อให้ได้ตัวอักษรภายในที่มีประสิทธิภาพ ในที่สุดบรรทัดสุดท้ายจะถูกพิมพ์โดยให้โค้ดสามารถผ่านเข้าไปในlรูทีนย่อย



2

C ++, 191 179 166 165 ไบต์

-12 ไบต์ขอบคุณ Kevin Cruijssen
-14 ไบต์ขอบคุณZacharý

#include<iostream>
#define C j;)std::cout<<char(97+(d+j
int main(){for(int i=0,j,d=1;i<53;d+=i++/26?-1:1){for(j=0;26>C++)%26);for(j=24;0<=C--)%26);std::cout<<'\n';}}

1
คุณสามารถบันทึก 12 ไบต์เช่นนี้:#include<iostream> int main(){for(int i=0,j,d=1;i<53;d+=i++/26?-1:1){for(j=0;j<26;)std::cout<<char((j+++d)%26+97);for(j=24;j>=0;)std::cout<<char((j--+d)%26+97);std::cout<<'\n';};}
Kevin Cruijssen

เควินแดงแล้วฉันก็นินจาฉัน
Zacharý

@KevinCruijssen ขอบคุณสำหรับความช่วยเหลือ อย่างไรก็ตามรหัสของคุณในความคิดเห็นนั้นมีอักขระ unicode ที่ไม่สามารถพิมพ์ได้
HatsuPointerKun

@HatsuPointerKun นั่นเป็นสิ่งที่เกิดขึ้นโดยอัตโนมัติในความคิดเห็นที่ฉันกลัว มันเป็นเรื่องจริงที่น่ารำคาญสวยเมื่อคุณพยายามที่จะคัดลอกวางรหัสจากมัน .. :)
เควิน Cruijssen

2
คุณสามารถใช้มาโครในทางที่ผิดโดยเพิ่มสิ่งนี้: #define C j;)std::cout<<char(97+(d+jจากนั้นเปลี่ยนบรรทัดสุดท้ายเป็น:int main(){for(int i=0,j,d=1;i<53;d+=i++/26?-1:1){for(j=0;26>C++)%26);for(j=24;0<=C--)%26);std::cout<<'\n';};}
Zacharý

2

ถ่าน , 24 21 ไบต์

-3 ไบต์ขอบคุณ ASCII-only

F²⁷«P✂×β³⊕ι⁺ι²⁷↓»‖B↓→

ลองออนไลน์!ลิงก์คือเวอร์ชัน verbose

... ฉันต้องทำงานกับ Charcoal-fu ของฉัน : P



ตอนนี้ฉันพบว่าอาร์กิวเมนต์ที่สี่Sliceเป็นตัวเลือก > _>
สิ้นเชิงมนุษย์

อาร์กิวเมนต์ทั้งหมด (ใช่ทั้งสี่) เป็นตัวเลือก
ASCII- เท่านั้น

วัด, niladic Sliceทำอะไรได้?
สิ้นเชิงมนุษย์

2
โอ้ต้องรอ nvm ใช่ต้องมีอาร์กิวเมนต์แรก: P
ASCII เท่านั้นเท่านั้น

1

JavaScript (ES6), 128 115 114 ไบต์

a='abcdefghijklmnopqrstuvwxyz'
for(o=[i=27];i--;)o[26-i]=o[26+i]=(a=(p=a.slice(1))+a[0])+[...p].reverse().join``
o

1

Groovy - 103 97 ไบต์

ฉันรู้ว่ามีวิธีที่ฉลาดกว่าในการทำสิ่งนี้ แต่ ...

. {t = ( 'a' .. 'Z') เข้าร่วม (); q = {มัน [-2..0]}; c = []; 27.times {t = t [1 ..- 1] + T [0] ค << T + Q (t)};. (c + Q (c)) เข้าร่วม ( '\ n')}

เมื่อเรียกใช้ผลลัพธ์ของสคริปต์คือคำตอบที่ร้องขอ

(ขอบคุณcarusocomputingสำหรับเคล็ดลับในการบันทึก 7 ไบต์)

อัปเดตตัวอย่างตาม:

ดูhttp://ideone.com/MkQeoW


แทน for for loop คุณสามารถใช้27.times(){}และบันทึกได้ 7 ไบต์;)
Magic Octopus Urn

1

แร็กเก็ต 293 ไบต์

(let*((ls list->string)(rr reverse)(sr(λ(s)(ls(rr(string->list s))))))(let p((s(ls(for/list((i(range 97 123)))(integer->char i))))
(n 0)(ol'()))(let*((c(string-ref s 0))(ss(substring s 1 26))(s(string-append ss(string c)(sr ss))))(if(< n 53)(p s(+ 1 n)(cons s ol))
(append(rr ol)(cdr ol))))))

Ungolfed:

(define (f)
  (define (sr s)           ; sub-fn reverse string;
    (list->string
     (reverse
      (string->list s))))
  (let loop ((s
              (list->string
               (for/list
                   ((i
                     (range 97 123)))
                 (integer->char i))))
             (n 0)
             (ol '()))
    (define c (string-ref s 0))
    (define ss (substring s 1 26))
    (set! s (string-append
             ss 
             (string c)
             (sr ss)))
    (if (< n 53)
        (loop s (add1 n) (cons s ol))
        (append (reverse ol) (rest ol)))))

การทดสอบ:

(f)

เอาท์พุท:

'("bcdefghijklmnopqrstuvwxyzazyxwvutsrqponmlkjihgfedcb"
  "cdefghijklmnopqrstuvwxyzabazyxwvutsrqponmlkjihgfedc"
  "defghijklmnopqrstuvwxyzabcbazyxwvutsrqponmlkjihgfed"
  "efghijklmnopqrstuvwxyzabcdcbazyxwvutsrqponmlkjihgfe"
  "fghijklmnopqrstuvwxyzabcdedcbazyxwvutsrqponmlkjihgf"
  "ghijklmnopqrstuvwxyzabcdefedcbazyxwvutsrqponmlkjihg"
  "hijklmnopqrstuvwxyzabcdefgfedcbazyxwvutsrqponmlkjih"
  "ijklmnopqrstuvwxyzabcdefghgfedcbazyxwvutsrqponmlkji"
  "jklmnopqrstuvwxyzabcdefghihgfedcbazyxwvutsrqponmlkj"
  "klmnopqrstuvwxyzabcdefghijihgfedcbazyxwvutsrqponmlk"
  "lmnopqrstuvwxyzabcdefghijkjihgfedcbazyxwvutsrqponml"
  "mnopqrstuvwxyzabcdefghijklkjihgfedcbazyxwvutsrqponm"
  "nopqrstuvwxyzabcdefghijklmlkjihgfedcbazyxwvutsrqpon"
  "opqrstuvwxyzabcdefghijklmnmlkjihgfedcbazyxwvutsrqpo"
  "pqrstuvwxyzabcdefghijklmnonmlkjihgfedcbazyxwvutsrqp"
  "qrstuvwxyzabcdefghijklmnoponmlkjihgfedcbazyxwvutsrq"
  "rstuvwxyzabcdefghijklmnopqponmlkjihgfedcbazyxwvutsr"
  "stuvwxyzabcdefghijklmnopqrqponmlkjihgfedcbazyxwvuts"
  "tuvwxyzabcdefghijklmnopqrsrqponmlkjihgfedcbazyxwvut"
  "uvwxyzabcdefghijklmnopqrstsrqponmlkjihgfedcbazyxwvu"
  "vwxyzabcdefghijklmnopqrstutsrqponmlkjihgfedcbazyxwv"
  "wxyzabcdefghijklmnopqrstuvutsrqponmlkjihgfedcbazyxw"
  "xyzabcdefghijklmnopqrstuvwvutsrqponmlkjihgfedcbazyx"
  "yzabcdefghijklmnopqrstuvwxwvutsrqponmlkjihgfedcbazy"
  "zabcdefghijklmnopqrstuvwxyxwvutsrqponmlkjihgfedcbaz"
  "abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba"
  "bcdefghijklmnopqrstuvwxyzazyxwvutsrqponmlkjihgfedcb"
  "cdefghijklmnopqrstuvwxyzabazyxwvutsrqponmlkjihgfedc"
  "defghijklmnopqrstuvwxyzabcbazyxwvutsrqponmlkjihgfed"
  "efghijklmnopqrstuvwxyzabcdcbazyxwvutsrqponmlkjihgfe"
  "fghijklmnopqrstuvwxyzabcdedcbazyxwvutsrqponmlkjihgf"
  "ghijklmnopqrstuvwxyzabcdefedcbazyxwvutsrqponmlkjihg"
  "hijklmnopqrstuvwxyzabcdefgfedcbazyxwvutsrqponmlkjih"
  "ijklmnopqrstuvwxyzabcdefghgfedcbazyxwvutsrqponmlkji"
  "jklmnopqrstuvwxyzabcdefghihgfedcbazyxwvutsrqponmlkj"
  "klmnopqrstuvwxyzabcdefghijihgfedcbazyxwvutsrqponmlk"
  "lmnopqrstuvwxyzabcdefghijkjihgfedcbazyxwvutsrqponml"
  "mnopqrstuvwxyzabcdefghijklkjihgfedcbazyxwvutsrqponm"
  "nopqrstuvwxyzabcdefghijklmlkjihgfedcbazyxwvutsrqpon"
  "opqrstuvwxyzabcdefghijklmnmlkjihgfedcbazyxwvutsrqpo"
  "pqrstuvwxyzabcdefghijklmnonmlkjihgfedcbazyxwvutsrqp"
  "qrstuvwxyzabcdefghijklmnoponmlkjihgfedcbazyxwvutsrq"
  "rstuvwxyzabcdefghijklmnopqponmlkjihgfedcbazyxwvutsr"
  "stuvwxyzabcdefghijklmnopqrqponmlkjihgfedcbazyxwvuts"
  "tuvwxyzabcdefghijklmnopqrsrqponmlkjihgfedcbazyxwvut"
  "uvwxyzabcdefghijklmnopqrstsrqponmlkjihgfedcbazyxwvu"
  "vwxyzabcdefghijklmnopqrstutsrqponmlkjihgfedcbazyxwv"
  "wxyzabcdefghijklmnopqrstuvutsrqponmlkjihgfedcbazyxw"
  "xyzabcdefghijklmnopqrstuvwvutsrqponmlkjihgfedcbazyx"
  "yzabcdefghijklmnopqrstuvwxwvutsrqponmlkjihgfedcbazy"
  "zabcdefghijklmnopqrstuvwxyxwvutsrqponmlkjihgfedcbaz"
  "abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba"
  "bcdefghijklmnopqrstuvwxyzazyxwvutsrqponmlkjihgfedcb"
  "abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba"
  "zabcdefghijklmnopqrstuvwxyxwvutsrqponmlkjihgfedcbaz"
  "yzabcdefghijklmnopqrstuvwxwvutsrqponmlkjihgfedcbazy"
  "xyzabcdefghijklmnopqrstuvwvutsrqponmlkjihgfedcbazyx"
  "wxyzabcdefghijklmnopqrstuvutsrqponmlkjihgfedcbazyxw"
  "vwxyzabcdefghijklmnopqrstutsrqponmlkjihgfedcbazyxwv"
  "uvwxyzabcdefghijklmnopqrstsrqponmlkjihgfedcbazyxwvu"
  "tuvwxyzabcdefghijklmnopqrsrqponmlkjihgfedcbazyxwvut"
  "stuvwxyzabcdefghijklmnopqrqponmlkjihgfedcbazyxwvuts"
  "rstuvwxyzabcdefghijklmnopqponmlkjihgfedcbazyxwvutsr"
  "qrstuvwxyzabcdefghijklmnoponmlkjihgfedcbazyxwvutsrq"
  "pqrstuvwxyzabcdefghijklmnonmlkjihgfedcbazyxwvutsrqp"
  "opqrstuvwxyzabcdefghijklmnmlkjihgfedcbazyxwvutsrqpo"
  "nopqrstuvwxyzabcdefghijklmlkjihgfedcbazyxwvutsrqpon"
  "mnopqrstuvwxyzabcdefghijklkjihgfedcbazyxwvutsrqponm"
  "lmnopqrstuvwxyzabcdefghijkjihgfedcbazyxwvutsrqponml"
  "klmnopqrstuvwxyzabcdefghijihgfedcbazyxwvutsrqponmlk"
  "jklmnopqrstuvwxyzabcdefghihgfedcbazyxwvutsrqponmlkj"
  "ijklmnopqrstuvwxyzabcdefghgfedcbazyxwvutsrqponmlkji"
  "hijklmnopqrstuvwxyzabcdefgfedcbazyxwvutsrqponmlkjih"
  "ghijklmnopqrstuvwxyzabcdefedcbazyxwvutsrqponmlkjihg"
  "fghijklmnopqrstuvwxyzabcdedcbazyxwvutsrqponmlkjihgf"
  "efghijklmnopqrstuvwxyzabcdcbazyxwvutsrqponmlkjihgfe"
  "defghijklmnopqrstuvwxyzabcbazyxwvutsrqponmlkjihgfed"
  "cdefghijklmnopqrstuvwxyzabazyxwvutsrqponmlkjihgfedc"
  "bcdefghijklmnopqrstuvwxyzazyxwvutsrqponmlkjihgfedcb"
  "abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba"
  "zabcdefghijklmnopqrstuvwxyxwvutsrqponmlkjihgfedcbaz"
  "yzabcdefghijklmnopqrstuvwxwvutsrqponmlkjihgfedcbazy"
  "xyzabcdefghijklmnopqrstuvwvutsrqponmlkjihgfedcbazyx"
  "wxyzabcdefghijklmnopqrstuvutsrqponmlkjihgfedcbazyxw"
  "vwxyzabcdefghijklmnopqrstutsrqponmlkjihgfedcbazyxwv"
  "uvwxyzabcdefghijklmnopqrstsrqponmlkjihgfedcbazyxwvu"
  "tuvwxyzabcdefghijklmnopqrsrqponmlkjihgfedcbazyxwvut"
  "stuvwxyzabcdefghijklmnopqrqponmlkjihgfedcbazyxwvuts"
  "rstuvwxyzabcdefghijklmnopqponmlkjihgfedcbazyxwvutsr"
  "qrstuvwxyzabcdefghijklmnoponmlkjihgfedcbazyxwvutsrq"
  "pqrstuvwxyzabcdefghijklmnonmlkjihgfedcbazyxwvutsrqp"
  "opqrstuvwxyzabcdefghijklmnmlkjihgfedcbazyxwvutsrqpo"
  "nopqrstuvwxyzabcdefghijklmlkjihgfedcbazyxwvutsrqpon"
  "mnopqrstuvwxyzabcdefghijklkjihgfedcbazyxwvutsrqponm"
  "lmnopqrstuvwxyzabcdefghijkjihgfedcbazyxwvutsrqponml"
  "klmnopqrstuvwxyzabcdefghijihgfedcbazyxwvutsrqponmlk"
  "jklmnopqrstuvwxyzabcdefghihgfedcbazyxwvutsrqponmlkj"
  "ijklmnopqrstuvwxyzabcdefghgfedcbazyxwvutsrqponmlkji"
  "hijklmnopqrstuvwxyzabcdefgfedcbazyxwvutsrqponmlkjih"
  "ghijklmnopqrstuvwxyzabcdefedcbazyxwvutsrqponmlkjihg"
  "fghijklmnopqrstuvwxyzabcdedcbazyxwvutsrqponmlkjihgf"
  "efghijklmnopqrstuvwxyzabcdcbazyxwvutsrqponmlkjihgfe"
  "defghijklmnopqrstuvwxyzabcbazyxwvutsrqponmlkjihgfed"
  "cdefghijklmnopqrstuvwxyzabazyxwvutsrqponmlkjihgfedc"
  "bcdefghijklmnopqrstuvwxyzazyxwvutsrqponmlkjihgfedcb")

1

Pyth ,21 19 ไบต์

j+PKm+PJ.<Gd_JS27_K

ลองออนไลน์!

คำอธิบาย:

j+PKm+PJ.<Gd_JS27_K   expects no input

j                     joins on new line
 +   +                joins two strings
  P   P               prints everything but the last element
   K                  initialize K and implicitly print
    m                 for...in loop, uses d as iterator variable
       J              initialize J and implicitly print
        .<            cyclically rotate
          G           initialized to the lowercase alphabet
           d          iterating variables of m
            _    _    reverse
             J        call J
              S27     indexed range of 27
                  K   call K



1

Kotlin , 106 ไบต์

{(0..52).map{i->(0..50).map{j->print((90-((Math.abs(j-25)+Math.abs(i-26)-1)+26)%26).toChar())}
println()}}

เชิดชู

{
    (0..52).map {i->
        (0..50).map {j->
            print((90 - ((Math.abs(j - 25) + Math.abs(i - 26) - 1)+26) % 26).toChar())
        }
        println()
    }
}

ทดสอบ

var v:()->Unit =
{(0..52).map{i->(0..50).map{j->print((90-((Math.abs(j-25)+Math.abs(i-26)-1)+26)%26).toChar())}
println()}}

fun main(args: Array<String>) {
    v()
}

TryItOnline

คำตอบของพอร์ตของ@Karl Napf


1

VBA (Excel) 116 ไบต์

Sub a()
For i=-26To 26
For j=-25To 25
b=b & Chr(65+(52-(Abs(j)+Abs(i))) Mod 26)
Next
Debug.Print b
b=""
Next
End Sub

ทำตามลอจิกของ Sir Joffan : D


1

VBA, 109 105 78 Bytes

Anonymous VBE immediate window function that takes no input and outputs the alphabet diamond to the VBE immediate window.

For i=-26To 26:For j=-25To 25:?Chr(65+(52-(Abs(j)+Abs(i)))Mod 26);:Next:?:Next


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.