ตัวอักษรแนวทแยง


66

ไม่มีการป้อนข้อมูลงานของคุณคือสร้างสิ่งต่อไปนี้:

a
 b
  c
   d
    e
     f
      g
       h
        i
         j
          k
           l
            m
             n
              o
               p
                q
                 r
                  s
                   t
                    u
                     v
                      w
                       x
                        y
                         z

ไม่ใช่งานของคุณคือสร้างตัวอักษรแต่ละตัวในตัวอักษรโดยมีช่องว่างก่อนที่จะเท่ากับตำแหน่งในตัวอักษรลบหนึ่ง

หากคุณพิมพ์สิ่งนี้จะต้องปรากฏดังด้านบน ช่องว่างภายนอกที่ไม่ส่งผลกระทบต่อลักษณะที่ปรากฏรวมถึงบรรทัดใหม่ที่ต่อท้ายจะได้รับอนุญาต คุณสามารถใช้ตัวพิมพ์เล็กทั้งหมดหรือพิมพ์ใหญ่ทั้งหมด

นอกจากนี้คุณยังสามารถส่งคืนจากฟังก์ชันตามกฎปกติไม่ว่าจะเป็นสตริงที่มีการขึ้นบรรทัดใหม่หรือรายการสตริง

นี่คือดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ!


ช่องว่างจำเป็นต้องเป็นช่องว่าง ASCII จริงหรือฉันสามารถให้ผลลัพธ์ได้a<VERTICAL-TAB>b<VERTICAL-TAB>c...ไหม ถ้ามีอักขระแบ็คสเปซอยู่ด้วยล่ะ? ตราบใดที่ผลการมองเห็นเหมือนกัน?
Digital Trauma

@DigitalTrauma ตราบใดที่มันดูเหมือนกันฉันไม่สนใจว่าคุณใช้ช่องว่างแบบไหน
Stephen

ฉันสามารถใช้แท็บแทนการเว้นวรรคได้หรือไม่

@ yamboy1 อืมอาจจะไม่ แท็บส่วนใหญ่จะถูกตั้งค่าเป็นช่องว่างจำนวนมาก - หากเส้นทแยงมุมของคุณดูเหมือนว่ามี4ช่องว่างอยู่ก่อนหน้านั้นแท็bบนั้นจะไม่ดูทแยงมุม ถ้ามันดูเหมือนความชัน ~ -1มันก็ใช้ได้
สตีเฟ่น

ไม่ส่งผลกระทบต่อรูปลักษณ์รวมถึงการมีพื้นที่ชั้นนำพิเศษหรือ 2?
MildlyMilquetoast

คำตอบ:


87

ถ่าน 2 ไบต์

↘β

ลองออนไลน์!

อย่างไร?

 β - the lowercase alphabet
↘  - direction

ประเภทของความท้าทายที่ Charcoal ได้รับการออกแบบมาตั้งแต่แรก


4
ภาษาที่ถูกต้อง :)
Stephen

2
สิ่งนี้ทำให้ฉันนึกถึงฉันอาจจะทำงานกับเครยอนมากกว่านี้ ... ฉันเชื่อว่า↘"abc ... xyz"qจะเป็นโปรแกรมการทำงานที่สั้นที่สุด ( ลองออนไลน์! ) ↘``26O;)qควรใช้งานได้ (เริ่มต้นด้วย backtick; สำหรับฉันแต่ละตัวใน 0 ... 25, ป๊อปอัพ implicit I, เพิ่ม backtick และเอาท์พุท), แต่มันโยนข้อผิดพลาด "stack stack" ด้วยเหตุผลบางอย่าง .. .
ETHproductions

2
2 ไบต์! SOUTH EAST ARROW เข้ารหัสหนึ่งไบต์ในไบต์ใด
Wyck

6
@Wyck Charcoal (หมายเหตุ: การเก็งกำไร) ใช้หน้ารหัสที่กำหนดเองซึ่งสามารถบีบอัดได้ถึง 1 ไบต์คำแนะนำ นั่นเป็นสิ่งที่ถูกต้องสำหรับ Code Golf codegolf.meta.stackexchange.com/questions/9428/…
Draco18s

14
@StephenS ผมคิดว่าคุณหมายถึงภาษาล่างขวา :)
Wossname

18

C, 45 ไบต์

f(i){for(i=0;++i<27;)printf("%*c\n",i,i+96);}

ขอบคุณ@Dennisสำหรับการบันทึก 5 ไบต์!


9
ใช้งานได้กับ machine ™ของฉัน
ทำลายได้ Lemon

ฉันคิดว่าคุณต้องเริ่มต้นใหม่หรือรีเซ็ตiในบางจุด อย่างน้อยใน TIO, ทำงานเฉพาะครั้งเดียวf()
Dennis

@Dennis Ah คุณพูดถูก แก้ไขที่
Doorknob

f(i){for(i=0;++i<27;printf("%*c\n",i,i+96));}บันทึกไม่กี่ไบต์
Dennis

3
f(i){for(i=96;i<122;)printf("%c\v",++i);}for 41 bytes - ตรวจสอบให้แน่ใจว่าได้ใช้งานบนเทอร์มินัลจริง (ใช่อนุญาตให้ทำได้ )
NieDzejkob

13

05AB1E , 14 8 6 ไบต์

-2 ไบต์ขอบคุณ @Emigna

AvyNú»

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

A      # lowercase alphabet
 v     # for letter in alphabet
  y    # push letter
   N   # push index of letter
    ú  # Pad letter with index of letter spaces
     » # Join with stack on newline.

ลองออนไลน์!

รุ่นดั้งเดิม, 14 ไบต์

26FNð×N65+ç«}»

คุณสามารถบันทึกอีก 2 AvyNú»ไบต์ด้วย
Emigna

@Emigna: ขอบคุณ! จะแก้ไขสิ่งต่อไปนี้
Neil A.

ƶดูเหมือนจะสมบูรณ์แบบ แต่ไม่ใช่ :(
Magic Octopus Urn

Λอาจยังไม่พร้อมใช้งานในขณะนั้น แต่26A3Λบันทึกเป็นไบต์
Kevin Cruijssen

1
@MagicOctopusUrn ₂A3Λจะยิ่งสั้นลงไปอีก
Kevin Cruijssen

12

JavaScript (ES6), 60 59 ไบต์

f=(n=10)=>n-36?" ".repeat(n-10)+n.toString(++n)+`
`+f(n):""

ฟังก์ชั่นวนซ้ำซึ่งส่งคืนสตริงที่มีบรรทัดใหม่ต่อท้าย


1
โอ้โหนั่นช่างเถอะ การแปลงตัวเลขในช่วง 10 ถึง 36 เป็นตัวเลขในฐานที่แปลก ยังไม่เข้าใจว่าทำไมฐานถึงต้องเพิ่มขึ้นเช่นกัน
Steve Bennett

2
@SteveBennett ที่ถูกต้อง แต่เป็นไบต์สั้นกว่าn.toString(++n)+f(n) n.toString(36)+f(n+1)
ETHproductions

1
คุณสามารถทำf=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):""เพื่อ 55
Arnauld

1
บันทึกไบต์กับ ES8 "".padEnd(n-10)+n.toString(++n)บาง:
Shaggy

1
@Annauld f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):sดูเหมือนจะได้รับอนุญาต
Shaggy

12

Ruby , 28 ไบต์

26.times{|a|puts" "*a<<97+a}

ลองออนไลน์!

คำอธิบาย:

ตัวดำเนินการ << บนสตริงใน Ruby ทำการหลอกลวงดังที่อธิบายไว้ในเอกสาร

  • str << จำนวนเต็ม→ str

  • str << obj → str

ผนวก - เชื่อมต่อวัตถุที่กำหนดเข้ากับ str ถ้าวัตถุนั้นเป็นจำนวนเต็มมันจะถือว่าเป็น codepoint และจะถูกแปลงเป็นอักขระก่อนทำการต่อข้อมูล


12

R, 38 37 36 ไบต์

write(intToUtf8(diag(65:90),T),1,26)

(การใช้งานwriteได้รับแรงบันดาลใจจากคำตอบของ @ Giuseppe )


3
ฉันสาบานว่าฉันพยายาม แต่ไม่สามารถใช้งานได้! ทำได้ดี. คุณสามารถบันทึก 1 ไบต์โดยใช้ 65:90 เนื่องจากตัวพิมพ์ใหญ่ได้รับอนุญาต
user2390246

@ user2390246 ขอบคุณที่ชี้นำ!
Sven Hohenstein

คุณสามารถใช้1แทน""การกำจัดไบต์อื่น
จูเซปเป้

@Giuseppe ขอบคุณที่ชี้นำ!
Sven Hohenstein

11

เป็นกลุ่ม 29 ไบต์

:h<_↵↵↵y$ZZ25o <Esc>{qqpblD+q25@q

ลองออนไลน์!

↵หมายถึงกดปุ่มย้อนกลับ

<Esc> หมายถึงกดปุ่ม Escape

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

:h<_↵↵↵                             Open the help and navigate to the alphabet
       y$ZZ                         Copy the alphabet and close the help
           25o <Esc>                Abuse auto-indent and create a whitespace diagonal
                    gg              Go to the beginning of the file
                      qq            Record a macro
                        pb          Paste the alphabet and go to the first letter
                          lD        Go to the second letter and cut the rest of the alphabet
                            +       Go to the first non-blank character in the next line
                             q      Stop recording the macro
                              25@q  Run the macro for the remaining letters

ลองออนไลน์! คุณสามารถใช้สิ่งนี้เพื่อสาธิตมันได้ (V อิงจากเสียงเรียกเข้าและเข้ากันได้เป็นส่วนใหญ่ยกเว้นว่าค่าเริ่มต้นของ autoindent จะปิด) นอกจากนี้ที่สำคัญน้อยกว่าคุณพลาด+คำอธิบายของคุณซึ่งทำให้ฉันเป็นครั้งที่สอง
nmjcman101

ขอบคุณ @ nmjcman101! ฉันพยายามที่จะหาวิธีที่จะลองเป็นกลุ่มออนไลน์และไม่เคยรู้ว่าเกี่ยวกับ V
jmriego

คุณสามารถใช้แทน <Esc>มันดูดีขึ้นเล็กน้อยในความคิดของฉัน
ข้าวสาลีตัวช่วยสร้าง

คุณสามารถบันทึกหนึ่งไบต์ถ้าคุณทำ{แทนgg
DJMcMayhem

คุณสามารถใช้2↵แทน↵↵↵และ Y แทน y $
GB

11

Python 2 , 36 ไบต์

n=65;exec"print'%*c'%(n,n);n+=1;"*26

สิ่งนี้ใช้ประโยชน์จากพื้นที่ว่างภายนอกที่ไม่ส่งผลต่อกฎลักษณะที่ปรากฏ

ลองออนไลน์!

รุ่นอื่น 38 ไบต์

n=1;exec"print'%*c'%(n,n+96);n+=1;"*26

สิ่งนี้สร้างผลลัพธ์ที่แน่นอนจากข้อมูลจำเพาะของความท้าทาย

ลองออนไลน์!


วิธีการที่ไม่%*cได้ทำงาน?
Leun Nun

%*<identifier>ใช้เวลาสองข้อโต้แย้ง: ความยาวที่จะแผ่นมันและสิ่งที่จริงเพื่อทดแทน บางprintfการใช้งานที่มีคุณสมบัติมากคลุมเครือมากขึ้นเช่น%1$<identifier>ผมใช้ที่นี่
Dennis


8

Pure Bash, 13

echo {a..z}^K^H

ที่นี่^Kและ^Hตัวอักษรและแท็บ Backspace ASCII ตัวควบคุมแนวตั้ง xxdถ่ายโอนข้อมูลของสคริปต์นี้จะเป็นดังนี้ - ใช้xxd -rในการงอกใหม่สคริปต์จริง:

00000000: 6563 686f 207b 612e 2e7a 7d0b 08         echo {a..z}..
  • {a..z}เป็นการขยายมาตรฐาน bash brace ที่จะสร้างa b c ... z(คั่นด้วยช่องว่าง)
  • ^Kแนวตั้งแท็บหยดเคอร์เซอร์ลงหนึ่งเส้นที่ตำแหน่งเดียวกัน
  • ^HBackspace ย้ายเคอร์เซอร์กลับหนึ่งเพื่อลบพื้นที่คั่น

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


หากอักขระควบคุมนอกรีตข้างต้นในเอาต์พุตมีการยืดมากเกินไปสำหรับคุณคุณสามารถทำได้ดังนี้:

Bash + ยูทิลิตี้ทั่วไป, 24

echo {a..z}^K^H|col -x|tac

ที่นี่^Kและ^Hตัวอักษรและแท็บ Backspace ASCII ตัวควบคุมแนวตั้ง xxdถ่ายโอนข้อมูลของสคริปต์นี้จะเป็นดังนี้ - ใช้xxd -rในการงอกใหม่สคริปต์จริง:

00000000: 6563 686f 207b 612e 2e7a 7d0b 087c 636f  echo {a..z}..|co
00000010: 6c20 2d78 7c74 6163                      l -x|tac

ลองมันออนไลน์ เบราว์เซอร์ของคุณอาจจะมองไม่เห็นแท็บแนวตั้งและแบ็กสเปซ แต่มี (มองไม่เห็นบนโครเมี่ยมซึ่งมองเห็นได้ใน Firefox)

  • col -x แสดงผลอินพุตอีกครั้งซึ่งอักขระควบคุมที่ตลกถูกแทนที่ด้วยช่องว่างและบรรทัดใหม่เพื่อให้ผลลัพธ์ภาพที่เหมือนกัน
  • ด้วยเหตุผลบางอย่างcolส่งออกบรรทัดในลำดับกลับ tacแก้ไขที่

มันเจ๋งมาก :) (และขอบคุณ meta และ @Dennis สำหรับการแนะนำการเรียงลำดับคำตอบใน codegolf ตามกิจกรรมแทนคะแนนเพื่อให้ได้คำตอบที่ดีกว่ามาแทน codegolf (น่าเบื่อมาก) ตัวสร้าง codins: codegolf.meta.stackexchange com / คำถาม / 10127 / … )
Olivier Dulac

เทอร์มินัลจำนวนมากแสดงผล^Kเป็นเคอร์เซอร์ขึ้นซึ่งเป็นพฤติกรรมที่colต้องเลียนแบบที่นี่
Neil

@Neil ใช่ว่าเหมาะสมแล้ว - colmanpage เรียก VT ว่า "reverse line feed" xterm, gnome-terminal และ OSX terminal ทั้งหมดหล่นลงมาหนึ่งบรรทัด ...
Digital Trauma

8

Brain-Flak , 124, 116 , 106 ไบต์

((((()))))(((([][]){}){})[[]()]<>){(({})<(({})<({}<>({})({})<>)>)
{({}<(<>({})<>)>[()])}{}(<>[][]<>)>[()])}

ลองออนไลน์!

คำอธิบาย:

คำตอบนี้เป็นการละเมิด Stack Height Niladแต่ด้วยวิธีการใหม่ที่ฉันไม่เคยใช้มาก่อนซึ่งฉันค่อนข้างภาคภูมิใจ นอกจากนั้นคำตอบก็ไม่ฉลาดเกินไป

ดังนั้นการวิเคราะห์ตัวละครที่ใช้ในศิลปะ ASCII นี้มีสามค่าจริง ๆ ที่ใช้บ่อย:

  • 32 (ช่องว่าง)

  • 64 (เพิ่ม 64 ถึง N เพื่อรับตัวอักษร N'th) และ

  • 10 (ขึ้นบรรทัดใหม่)

เช่นเดียวกับ 26. (จำนวนลูป) และตัวเลขเหล่านี้จะถูกผลักในสถานที่ที่แตกต่างกันดังนั้นเราจึงไม่สามารถนำค่ากลางมาใช้จริงเพื่อทำให้ตัวเลขมีขนาดเล็กลง และการผลักดันทั้งหมดของตัวเลขเหล่านี้คือขนาดมหึมา 86 ไบต์เพียงอย่างเดียว:

10:
((()()()()()){})

26:
((((()()()){}){}()){})

32:
((((()()()()){}){}){})

64:
(((((()()()()){}){}){}){})

นี่มันช่างน่ากลัว นี่คือวิธีที่เราทำให้สะดวกขึ้น วิธีการที่ชัดเจนคือการผลักดัน32ลงบนกองสำรองซึ่งจะทำให้เรา32snippet กลายเป็น: (<>({})<>)ของเราและข้อมูลโค้ดจะกลายเป็น64 (<>({})({})<>)หากเรารวมการกดเริ่มต้น32กับการกดเริ่มต้น26เราสามารถบันทึกได้ 8 ไบต์โดยประมาณ (กอล์ฟครั้งแรกของฉัน)

แต่นี่เป็นที่ที่กลอุบายที่ฉันภูมิใจนำเข้ามาเนื่องจากเราไม่ได้ใช้กองซ้อนสำรองสำหรับสิ่งอื่นเราจึงอาจตีกอล์ฟทั้ง 10 ด้วย ในการทำเช่นนี้เราจะกดตัวเลขโดยพลการ 4 ตัวไปยังสแต็คทางด้านขวาเมื่อเริ่มต้นโปรแกรม เนื่องจากเราเพิ่มจำนวน 32 ค่านี้จะเพิ่มมูลค่าของ[]nilad เป็น 5 ซึ่งทำให้10ตัวอย่างของเราสะดวกยิ่งขึ้น และโชคดีสำหรับเราจริง ๆ แล้วมันช่วยให้เราตีกอล์ฟ32 และ 26ตัวอย่างลงไปด้วย!

#Push 32, 26
(((((()()()()){}){}){})<>[(()()()){}])

#Push 10
((()()()()()){})

กลายเป็น

#Push 32, 26 (-2 bytes)
(((((())))))((([][][]){}()())[[]]<>)

#Push 10 (-6 bytes)
(<>[][]<>)

ดังนั้นนี่คือคำอธิบายโดยละเอียด:

# Push 1 four times
((((()))))

# Push 32 to main stack (to reuse later)...
((([][][]){}()())

# And then 26 to the alternate stack
[[]()]<>)

#While true
{

    # Keep track of the current TOS
    (({})<

        # Push [TOS, TOS + 64] (To get uppercase characters)
        (({})<({}<>({})({})<>)>)

        # TOS times...
        {
            # Decrement the loop counter, while pushing a space underneath it
            ({}<(<>({})<>)>[()])

        # Endwhile, pop zeroed counter
        }{}

        # Push 10 (newline)
        (<>[][]<>)

    # Push TOS - 1 back one
    >[()])

# Endwhile
}


7

Google ชีต 67 65 ไบต์

=ArrayFormula(IF(ROW(A1:Z)=COLUMN(A1:Z26),CHAR(96+ROW(A1:Z26)),))

= ARRAYFORMULA (IF (ROW (A1: Z) = COLUMN (A1: Z26), CHAR (96 + ROW (A1: Z26)), ""))

ออกจากการชี้แจงว่าช่องว่างใด ๆ จะทำฉันใช้เซลล์ว่างเปล่าอย่างเห็นได้ชัด

เอาท์พุต

แจ้งให้เราทราบหากนี่ไม่นับถ้าฉันเข้าใจผิดนับไบต์หรือว่าฉันทำผิดจรรยาบรรณเพราะนี่เป็นโพสต์แรกของฉันที่นี่

แก้ไข: ปรากฎว่าฉันสามารถบันทึก 2 ไบต์โดยออก "" เป็นแผ่นงาน Google จะยอมรับที่ว่างเปล่าถ้าค่า


1
ยินดีต้อนรับสู่ PPCG :) ดูดี! ทำได้ดีมากในการเอาชนะคำตอบของ Google ชีต!
Stephen

7

APL (Dyalog) , 9 7 ไบต์SBCS

-2 ไบต์ด้วยคำใบ้ของ ngn

↑⍨∘-⌸⎕A

[ลองออนไลน์!] [TIO-j3o0ipjy]

⎕A ตัวพิมพ์ใหญ่A lphabet

 ระหว่างแต่ละรายการ (องค์ประกอบรายการดัชนี) แทรกฟังก์ชัน tacit ต่อไปนี้:

↑⍨ จากองค์ประกอบ (ตัวอักษร) รับ ...

 และ ...

- ลบจำนวนดัชนีของตัวละครเช่นที่ตัวละครหลายตัวจากด้านหลัง, padding ที่ด้านหน้าด้วยช่องว่าง

ลองออนไลน์!


ดี ความพยายาม J ของฉันค่อนข้างละเอียดมากขึ้น มีการแปลคำกริยาเหล่านี้เป็น J หรือไม่?
Jonah

@Jonah กริยา: เป็น{.และเป็นi.คำวิเศษณ์¨เป็น"0และเป็น ~
อดัม

ขอบคุณ ดูเหมือนว่าการแปล J จะสูญเสียความกระชับ:(a.{~97+i.26){."0~-1+i.26
Jonah

@ Adam ผลลัพธ์ไม่ได้ดูตามที่ต้องการ; คำใบ้: ใช้เพื่อส่งออกเมทริกซ์ที่เหมาะสมและบันทึก 2 ไบต์
ngn

@ngn คุณอาจส่งคืนรายการสตริง (... ) แต่ฉันจะตรวจสอบ แก้ไข: ใช่แล้ว!
อดัม

6

อ็อกเทฟ25 25หรือ 12 ไบต์

[diag(65:90)+32 '']

ลองออนไลน์!

โซลูชันอื่นที่เสนอโดย @LuisMendo (12 ไบต์) ที่ฉันทดสอบใน Octave รุ่น windows:

diag('a':'z')

คำอธิบาย:

a:zสร้างเมทริกซ์ทแยงมุมของ


@LuisMendo ใน tio ฉันไม่สามารถให้ผลลัพธ์เดียวกัน มันคือการแสดงออกที่สามารถประเมินที่ผลิตผลลัพธ์ที่ต้องการ :)
rahnema1

โซลูชันที่เสนอโดย Luis ดูเหมือนจะใช้งาน TIO ในตอนนี้ ... อาจเป็นรุ่นใหม่ของ Octave หรือไม่
Stewie Griffin

หรือเวอร์ชั่นใหม่ของ tio!
rahnema1

6

Java 8, 72 71 70 61 ไบต์

o->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}

-1 ไบต์โดยการส่งออกตัวอักษรตัวพิมพ์ใหญ่แทนตัวพิมพ์เล็ก
-1 ไบต์โดยการพิมพ์โดยตรงแทนที่จะส่งกลับสตริงหลายบรรทัด
-8 ไบต์ขอบคุณที่@ OliverGrégoireโดยใช้โดยตรงในการกำจัดprintf String s="";และยัง -1 ไบต์โดยการเปลี่ยนไป()->o->

ลองที่นี่


การปฏิบัติที่ไร้เดียงสานั้นสั้นกว่าที่ฉันคิดไว้ คุณสามารถบันทึกไบต์ด้วยc=65(หรือ64จริง ๆ ) ดังนั้นคุณจึงไม่จำเป็นต้องใช้ตัวเลข 3 ตัว สามารถส่งกลับอาร์เรย์แทนสตริงช่วยให้คุณประหยัดไบต์ใด ๆ ในขณะที่คุณสามารถลบ+"\n"?
TheLethalCoder

@TheLethalCoder อ่าไม่รู้ว่าเราได้รับอนุญาตให้ส่งออกตัวอักษรตัวพิมพ์ใหญ่ ไขมันต่ำกว่านั้น ขอบคุณ และคุณหมายถึงอะไรโดยการแสดงอาเรย์ เหมือนอาร์เรย์?
Kevin Cruijssen

1
@TheLethalCoder เคล็ดลับใด ๆ ก็ยินดีต้อนรับขอบคุณมาก แต่ในกรณีนี้มันจะไม่สั้นลง :)
Kevin Cruijssen

1
@Winter เกี่ยวกับข้อเสนอแนะแรกของคุณยังคงมีการพูดคุยกันในเมตาโพสต์นี้ แต่ตัดสินด้วยคะแนนโหวตฉันคิดว่ามันได้รับอนุญาตอย่างแน่นอนตั้งแต่นี้เป็นต้นไป ส่วนที่สองฉันไม่แน่ใจ .. มันรู้สึกเหมือนการโกง / ดัดกฎโดยเฉพาะอย่างยิ่งหลังจากการสนทนาที่ร้อนแรงเหล่านี้ในความคิดเห็นของโพสต์เมตาและคำตอบนี้
Kevin Cruijssen

1
62 ไบต์: ()->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}ใช้ความคิดเช่นเดียวกับในความท้าทายอื่น
Olivier Grégoire

5

เยลลี่ ,  10  9 ไบต์

-1 ไบต์ขอบคุณเดนนิส (หลีกเลี่ยงการลดลงJโดยใช้ช่วงที่ลดลง26Ḷ, โดยตรง)

26Ḷ⁶ẋżØaY

โปรแกรมเต็มรูปแบบที่พิมพ์ผลลัพธ์

ลองออนไลน์!

( ØaJ’⁶ẋżสำหรับ 7 คือลิงค์แบบ monadic ที่ส่งคืนรายการของรายชื่อตัวละคร แต่นั่นเป็น[["a"],[" ","b"],[" ","c"],...]สิ่งที่ยอมรับไม่ได้)

อย่างไรก็ตามฉันจะไม่แปลกใจหากมีวิธีที่สั้นกว่าที่ฉันไม่ได้คิด!

อย่างไร?

26Ḷ⁶ẋżØaY - Main link: no arguments
26        - literal 26
  Ḷ       - lowered range = [0,1,2,...,26]
   ⁶      - literal space character
    ẋ     - repeat          [ [],      [' '],      [' ',' '],    ...,  [' ',' ',...,' ']]
      Øa  - yield lowercase alphabet
     ż    - zip             [[[],'a'],[[' '],'b'],[[' ',' '],'c'],...,[[' ',' ',...,' '],'z']]
        Y - join with newlines  [[],'a','\n',[' '],'b',\n',[' ',' '],'c','\n',...,'\n',[' ',' ',...,' '],'z']
          - implicit print (smashes the above together, printing the desired output)

ฉันยังต้องการช่วยให้[["a"],[" ","b"],[" "," ","c"],...]ตั้งแต่รายการของตัวอักษรเป็นคำนิยามทางเลือกสำหรับสตริง แต่ tuple ดูเหมือนจะไม่พอดี :)
สตีเฟ่น

ใช่นั่นคือสิ่งที่ฉันคิด
Jonathan Allan

1
... โปรดทราบว่าในรายการด้านบนแต่ละ"..."รายการเป็นตัวอักษรดังนั้นจริงๆแล้วมันเป็น[[['a']],[[[' '],['b']],[[' ',' '],['c']],...]เพราะเจลลี่ไม่มีสตริงจึงเป็นเพียงรายการ
Jonathan Allan

26Ḷ⁶ẋżØaYบันทึกเป็นไบต์
Dennis

ØaJ’⁶ẋżสำหรับ7สำหรับรุ่นทางเลือกของคุณ
Leun Nun


5

อลิซ , 22 20 ไบต์

52E&waq'a+q&' d&o]k@

ลองออนไลน์!

แม้ว่าเอาต์พุตจะเป็นสตริง แต่กลับกลายเป็นว่าโหมดเลขลำดับนั้นไม่ใช่วิธีที่จะไปสำหรับความท้าทายนี้

คำอธิบาย

52E&w             k@     do 26 times
     a                   push 10 (LF)
      q                  push current tape position (initially zero)
       'a+               add the ASCII code for "a"
          q&'            push 32 (space) a number of times equal to tape position
              d&o        output entire stack
                 ]       move tape position one space to the right

วิธีแก้ไขก่อนหน้า

["za/?rO&
' !]\"ohkw@/

ลองออนไลน์!

ฉันไปถึงโซลูชัน 23 ไบต์ก่อนที่ฉันจะสามารถหาโซลูชันนี้ได้

คำอธิบาย

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

คำสั่งถูกดำเนินการตามลำดับต่อไปนี้:

[                   move cardinal tape position left
 "za"               push this string (as a string, since the final " is in ordinal mode)
     r              interpolate to entire range (i.e., the lowercase alphabet backward)
      h             split first character from string
       &            for each character in string: push that character and...
        w                                         push current address onto return address stack
         ' !        (cardinal mode) place 32 (space) at current cardinal tape position
            ]       (cardinal mode) move cardinal tape position right
             ?      (back to ordinal mode) read string from tape starting at ordinal tape position
                    this string will consist of n-1 spaces.
              o     output string of spaces
               O    output top of stack (current letter) followed by newline
                k   return to pushed return address. 
                    after 26 times through this loop, the return address stack will be empty and this is a no-op.
                 @  terminate

5

Brainfuck, 103 ไบต์

>-<-----[[<+>->>+++>-<<<]>++]<<<<<<<<<[-]>>>-[<[-]<[-]<[>+>+<<-]>>[<<+>>-]<[>>>>.<<<<-]<+>>>>.+>>.<<<-]

ลองออนไลน์!

ตำแหน่งของตัวแปรนั้นไม่สามารถแก้ไขได้

คำอธิบาย

>-<-----[[<+>->>+++>-<<<]>++]   Initializes the tape.
<<<<<<<<<[-]>[-]>>-             Resets variables that
                                need to be at 0.
[                               For loop (25 to 0).
 <[-]<<[>+>+<<-]>>[<<+>>-]      Copy the spaces count in
                                order to use it in a loop.
 <[>>>>.<<<<-]                  Prints the spaces.
                                Prints the character followed
 <+>>>>.+>>.<<<-                by a new line. Also decrements
                                the main loop counter.
]

5

Google ชีตขนาด 69 ไบต์

=ArrayFormula(JOIN("
",REPT(" ",ROW(A1:A26)-1)&CHAR(96+ROW(A1:A26))))

ไม่มีอะไรซับซ้อนที่นี่ เคล็ดลับเดียวคือใช้ArrayFormulaและROW(A1:A26)เพื่อคืนค่าที่แตกต่างกัน 26 สำหรับJOINฟังก์ชั่น ผลลัพธ์มีดังนี้:

เอาท์พุต


ฉันคิดว่า Excel 2016 สามารถทำสิ่งเดียวกันได้TEXTJOINแต่ฉันไม่สามารถป้อนสูตรอาร์เรย์ในเวอร์ชันออนไลน์และมีเพียง 2013 เอง สูตรควรเป็นดังนี้:

=TEXTJOIN("
",FALSE,REPT(" ",ROW(A1:A26)-1)&CHAR(96+ROW(A1:A26)))

การป้อนเป็นสูตรอาเรย์ ( Ctrl+ Shift+ Enter) จะเพิ่มวงเล็บปีกกา{ }ทั้งสองด้านทำให้มีขนาด 67 ไบต์ ใครก็ตามที่สามารถตรวจสอบได้ก็ยินดีที่จะใช้มันเป็นคำตอบของพวกเขาเอง


5

เมล็ดพันธุ์ , 6014 ไบต์

ฉันไม่คิดว่านี่จะชนะรางวัลใด ๆ แต่เพื่อความสนุกนี่คือทางออกใน Seed

86 11103250503694729158762257823050815521568836599011209889044745493166180250197633623839266491438081837290079379263402288506775397211362446108152606095635373134468715450376738199004596861532212810083090232034321755895588102701453625219810339758989366211308223221344886043229936009486687653111291562495367476364760255760906228050130847228170228716790260998430434027546345063918859356161024202180254514539438087787769611000320430464740566450402368450792375043801526494811596087812709169139468697779440918934518195843690439213251884693846598754642076364755341359062651237754916053099089619667382845958005035392458577634784453744876558142057256976895330859887974064083588368087014591508237946214519271550243549214199679364098489146944338807874570414584343165070707969101892779772740177526390597395955859236589308394889243501541206981604661264930842784772121710695027991351718061777696274815931123342985242351444203296855501870888626347939456384376808446806093364176576945969539054970975848477876079897476093353730443488664472826635815956526890935049081522728044807877072639829234224838977148057506785320443165975265560224605597481381188291535996775480326796788286452216432605854564432262547835415260058472165825285438444435690700488258778785613363062417500848996527077259315494936037544655054620369560227407957368700650031346856230643646273909094915618471799926504192999361174763592054723307855670381682927214117502862645460031555724588536036895597768493827964819026940533784490457441244859937078155137620826821294513857153097135094397278852300032685608169642137925241118197368192392427097109982751185030229544527638686131131545529690698706313745703838144933923021851042677941879847025167921010148923860660695145106913052517930707522151230705792709484338746351589089180137363986003757314611932324492978098101655359729841878862276799317010824753645947659706175083519817734448003718088115457982394423932136760435046136644679525408371158980833993157988971884061469882136904103033944270884697456159261033500286722891139158500027351042265757431184139617566089023339480051231776345929815102059539844917563709940188668873305602146506284075271989710388430531233185164106985265575418252638186398535149202928422854319253947591044830747981534342833040219194969504971457701296402664807369043224201667623773161453335066484102800249947322601702575025462427139266561015140950621152993027466758026351218924607290766894274223554418125824416921899080393405328694235821466034161071834073874727856768719898425047229002772806527172294625623026601313091815217479540688812203850300478145319935479599086534606210099372526810614742385909275512758349679098012967475393301857434507012875239092688018536028125644341148882858752275129016876257290205949225918496182271679312996010157634568807332616541938310641844258434083838017690572891417189135014450484203635258935943095637185443145042430274553211816422809756194554145177421779800554334935224073734034988935790096239926730047370699006392111034056662661567902477446646680125183082979598538506383502737734442490068661537425714549752783861222862366340979663873475326752237893690641570287341027097775099918958849864419430754493042534812120486345363285167685811903366691676146427476942948696624274431993989133835880516551024369474029197791751838810883302415448112237526350703063618171739262753474029252659418383385834751808940073804107171146665382663467460066719556797639176747423279761528061219482681051780434845070421974558638870988408449698678976622755518024906714421419806347234183574860655249471877105716127767795785164699804819127058322715857697491583787449703283625085118896433923054087238479453964363805045497229148813441732912067120594705269402106426011497763749556561398150139686331615167139081591537739333533146667211063179804707883556569241294269430626179579760506971066676011512530066694518309930078451295032445835025178124213221937594928472509588116557231122849491576207720183829735710200290762251904109318007206980645946249679357907549498615310165588678201768095297568708803842208357473777731751349499510116345704811971207818719582793964185192140178454948686109674659005978400204479072321714207828018696339659886683414074211823497880135255138161141724546221354224299071581607979907417508104234534779573666933024250229754952685174194168516481670999039048675109878524061868078078216337487277443941946961426121900907734301692962783139932352047932263834773963592317279425421954035566305805348109175553209815893678595198155962166838761859540063188209014774346841267440789072833797121217961797443744676162541668802226500817146368372390178287945076657776275930590173768326046610094573983886099504933977126798348879838826160714899283593774855907724617352862079916515034033299006419237012240730789008999523238851913897908225482003661109026061857228300111070725651744312468140016983078297938157227595743419983763920290850801438187869169473456288283458163865462359588316419331445070232596307970490434468929587726795603069137946085898481642595124580643542063564880389350236902538522311931690905858973696558714577085714396738993556273941292496636824719451697631982422926675238248502170501569627556395875619564600587531422890212003952929325067813498958390095519100963598626450443103780781917045489137526377521695121594716424797216910752252094749957224424042047863869830458287114846161217532552045343745235776511344577755412402833175338541217548987687334493461236111032661075185714361252784989689657180878190058132112701323898697673356854132286586129946906160482715702618768869398700713988301485421822519104930442450343377920756456344715552821899659777521739288202633751258303637433110490141551780764889912485271829265224821750882760152112536985349681370761157202793523201156381835717321637420939424473215237574260806475544972321933149796156065126465186203580256364372579422208318560608817806013462242728082475787319168695978160861791054731154820533251279706873332364894538291172324730671914083193733203570060223897442373172904974570329139578763294810924815364789498523721281918680145538278976651264

มันแปลเป็นโปรแกรม Befunge ต่อไปนี้:

vaa{       @>
v#      g02<v
>30g20g`   |
10g-:!v!: < >#<
v,:g02_40g,1- ^
>1+20p$91+, v


4

เพิ่ม ++ , 1,069 ไบต์

+97
&
-87
&
+22
&
+66
&
-88
&
+22
&
&
+67
&
-89
&
+22
&
&
&
+68
&
-90
&
+22
&
&
&
&
+69
&
-91
&
+22
&
&
&
&
&
+70
&
-92
&
+22
&
&
&
&
&
&
+71
&
-93
&
+22
&
&
&
&
&
&
&
+72
&
-94
&
+22
&
&
&
&
&
&
&
&
+73
&
-95
&
+22
&
&
&
&
&
&
&
&
&
+74
&
-96
&
+22
&
&
&
&
&
&
&
&
&
&
+75
&
-97
&
+22
&
&
&
&
&
&
&
&
&
&
&
+76
&
-98
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
+77
&
-99
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
+78
&
-100
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+79
&
-101
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+80
&
-102
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+81
&
-103
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+82
&
-104
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+83
&
-105
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+84
&
-106
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+85
&
-107
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+86
&
-108
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+87
&
-109
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+88
&
-110
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+89
&
-111
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+90
&
P

ลองออนไลน์!

อ๋อ นั่นคือฮาร์ดโค้ด ฉันแน่ใจว่ามีวิธีที่ดีกว่าและถ้าคุณต้องการที่จะหามันไปข้างหน้า แต่วิธีนี้ดูเหมือนว่าจะทำงานได้ดีที่สุดเพราะ Add ++ ยากที่จะทำงานกับหน่วยความจำ


4

R , 59 49 47 ไบต์

-10 ไบต์ขอบคุณ djhurio

-2 ไบต์ต้องขอบคุณ Sven Hohenstein

write("diag<-"(matrix("",26,26),letters),"",26)

พิมพ์ไปยัง stdout outgolfed โดยผู้ใช้ 2390246

ลองออนไลน์!


คุณสามารถแทนที่26^2ด้วย676เพื่อบันทึกไบต์
Doorknob

2
m=matrix("",26,26);diag(m)=letters;write(m,'',26)(49 bytes)
djhurio

สำหรับจำนวนไบต์เท่ากันคุณสามารถพิมพ์เมทริกซ์โดยใช้cat(m,fill=27)
JAD

1
@djhurio "สำหรับจำนวนไบต์เท่ากัน"
JAD

1
@Giuseppe คำสั่งจะคล้ายกับ"diag<-"(x, y) diag(x) <- yค่าไม่ได้ถูกกำหนดให้กับตัวแปร แต่ส่งคืน
Sven Hohenstein

4

> <> , 46 44 42 ไบต์

"A"0::?!v" "o1-40.
*(?!;30.>~$:oao1+$1+:d2

ลองออนไลน์!

คำอธิบาย

Line 1:
"a"0::?!v" "o1-40.
"a"0                       :Initialize the stack items (print char and space count)
    ::?!v                  :Duplicate the space count, check if 0, go down if 0
         " "o1-            :Print a space then take 1 from the space count
               40.         :Jump to codepoint row 0 col 4 (this restarts the loop)
Line 2:
*(?!;30.>~$:oao1+$1+:d2
        >~                 :Remove the zeroed space counter off the stack
          $:oao1+          :Place our print char on the top of the stack, duplicate and print it, print a new line, increase it by 1; a->b->c etc
                 $1+       :Place our space count on the top of the stack and increase it by 1
*                   :d2    :Duplicate the space counter, add 26 to the stack
 (?!;                      :Add 0 to the stack, less than compare 0, if the counter is above 0 it terminates
     30.                   :Jump to the first line, (back to printing spaces)

นี่เป็นสิ่งที่แตกต่างอย่างสิ้นเชิงจาก 46 ไบต์ก่อนหน้าของฉันดังนั้นฉันจึงรวม TIO เข้ากับตัวเดียวเท่านั้น 46 ไบต์ลองออนไลน์!

ด้านล่างนี้เป็นลิงค์สำหรับการส่งของ Emigna มันเป็นคำตอบแรก> <> แต่ฉันเชื่อว่าของฉันแตกต่างกันพอสมควร (และบันทึกไม่กี่ไบต์) เพื่อรับประกันวินาทีที่สอง

คำตอบของ Emigna


และตอนนี้เราถูกมัด ดีที่สุดถ้าคุณตีกอล์ฟหนึ่งไบต์หรือสองครั้งเพื่อให้แน่ใจ)
Emigna

@Emigna ฉันคิดว่า 3 ไบต์ที่บันทึกไว้จะเพียงพอ: o ฉันคิดว่าฉันมีงานอีกมากที่ต้องทำ :)
Teal pelican

4

Haskell , 66 65 58 57 45 43 ไบต์

ขอบคุณ@nimiและ@maple_shaftสำหรับการบันทึก12 14 ไบต์

unlines[(' '<$['b'..n])++[n]|n<-['a'..'z']]

ลองออนไลน์!


1
คุณจะได้คะแนนเท่ากัน แต่บางครั้งคุณสามารถใช้<$แทนการทำซ้ำ:(' '<$[1..(fromEnum n-97)])
maple_shaft

2
คุณสามารถเปลี่ยน @ (' '<$['b'..n])ข้อเสนอแนะเพื่อ
nimi

f=ในฐานะที่เป็นฟังก์ชั่นที่ไม่มีชื่อจะได้รับอนุญาตมีความจำเป็นสำหรับการไม่มี
nimi

2
Btw ['a'..'z']>>= \n->(' '<$['b'..n])++[n,'\n']ไบต์เดียวกันนับ:
nimi

4

PHP, 23 ไบต์

หมายเหตุ: ใช้การเข้ารหัส IBM-850

<?=join(~¶,range(a,z));

ทำงานแบบนี้:

echo '<?=join(~¶,range(a,z));' | php -n;echo
# With default (utf8) terminal:
echo '<?=join("\v",range(a,z));' | php -n;echo

คำอธิบาย

สร้างอาร์เรย์ของอักขระทั้งหมดของตัวอักษรรวมเข้าด้วยแท็บแนวตั้งเป็นกาว


4

brainfuck , 80 ไบต์

++++++++[>+>++++>++++++++>+++<<<<-]>++>>+>++[->[<<<.>>>->+<]>+[-<+>]<<<.+<<.>>>]

ลองออนไลน์!

จัดรูปแบบ:

++++++++[>+>++++
>++++++++>+++<<<
<-]>++>>+>++[->[
<<<.>>>->+<]>+[-
<+>]<<<.+<<.>>>]

ใช้ฟังก์ชั่นรุ่นคูณง่ายต่อการใส่ค่าคงที่บางอย่างในหน่วยความจำแล้วซ้ำกระบวนการของพื้นที่การพิมพ์ N แล้วสำหรับ'A' + NN = 0..25

ข้อเขียน:

INITIALIZE TAPE: 10 32 65 >26< 0 0
C_NEWLINE: 10
C_SPACE: 32
V_ALPHA: 65
V_COUNTER: 26
V_PREFIX: 0
V_PREFIX_TEMP: 0
++++++++[>+>++++>++++++++>+++<<<<-]>++>>+>++

WHILE V_COUNTER != 0  [-
   "PRINT C_SPACE REPEATED V_PREFIX TIMES"
   "V_PREFIX_TEMP = V_PREFIX"
     V_PREFIX TIMES  >[-
       PRINT C_SPACE <<<.>>>
       INCREMENT V_PREFIX_TEMP >+<
     ]
   "V_PREFIX = V_PREFIX_TEMP PLUS 1"
     V_PREFIX_TEMP PLUS 1 TIMES  >+[-
       INCREMENT V_PREFIX <+>
     ]
   PRINT C_ALPHA <<<.
   INCREMENT C_ALPHA +
   PRINT C_NEWLINE <<.
>>>]

4

RProgN 2 , 5 ไบต์

aS`\x0B.

\ x0B เป็นตัวอักษรแท็บแนวตั้ง

เพียงแค่ใช้ตัวอักษรพิมพ์เล็กแยกและรวมกับแท็บแนวตั้ง สิ่งนี้สร้างผลกระทบที่ตั้งใจไว้ในขั้ว Bash บางอย่าง

เรียกใช้สคริปต์

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