ตัวอักษรสามเหลี่ยม


15

ได้รับหมายเลขการป้อนข้อมูลnจาก1ไป26(หรือ0จะ25) a=1, b=2, c=3, ...เอาท์พุทอ่านตัวอักษรจากซ้ายไปขวาและรวมถึงตัวอักษรที่สอดคล้องกันด้วย เกลียวเป็นตัวอักษรที่ต้องทำซ้ำในแนวตั้งที่สอดคล้องกับตำแหน่งของพวกเขาในตัวอักษร ตัวเลขคี่ (เมื่อ - ทำ1ดัชนี) ควรมีความสมดุลข้ามเส้นแนวนอนในขณะที่ตัวเลขคู่ควรสลับระหว่างความนิยมด้านบนหรือด้านล่าง (คุณสามารถเลือกทิศทางที่จะไปก่อน) หากคุณเป็นดัชนี 0 ให้สลับคี่ / คู่ในประโยคก่อนหน้า

คำพูดอีกทางหนึ่ง - ถ้าค่าตัวอักษรของตัวอักษร?เป็น#แล้วควรจะมี#สำเนาของตัวอักษรในการส่งออกที่ทั้งหมดของพวกเขาใน#คอลัมน์ TH aตัวอักษรเหล่านี้ควรมีความสมดุลอย่างสม่ำเสมอบนและด้านล่างเส้นแนวนอนที่มี หากตัวอักษรไม่สามารถสมดุลได้อย่างเท่าเทียมกันให้สลับเป็นตัวอักษร "พิเศษ" ด้านบนและด้านล่างบรรทัดนั้น

ต่อไปนี้เป็นผลลัพธ์หกรายการแรก ( n = 1,2,3,4,5,6ซึ่งมีการจัดทำดัชนี 1 รายการเลือกเพื่อสลับไปที่ด้านล่างก่อน) คั่นด้วยบรรทัดใหม่เพื่อให้คุณเห็นรูปแบบ #ความคิดเห็นอธิบายรูปแบบเริ่มต้นด้วย

a         # On a line by itself

ab
 b        # The "extra" letter is below the horizontal

  c
abc       # The 'c' splits evenly
 bc

   d      # Because the 'b' was below, the extra 'd' must be above
  cd
abcd
 bcd


   de
  cde
abcde     # The 'e' balances
 bcde
    e

   def
  cdef
abcdef
 bcdef
    ef
     f    # Since the 'd' was above, the extra 'f' must be below

(ข้ามไปไม่กี่ครั้งn=26)

                       xyz
                      wxyz
                   tuvwxyz
                  stuvwxyz
               pqrstuvwxyz
              opqrstuvwxyz
           lmnopqrstuvwxyz
          klmnopqrstuvwxyz
       hijklmnopqrstuvwxyz
      ghijklmnopqrstuvwxyz
   defghijklmnopqrstuvwxyz
  cdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
 bcdefghijklmnopqrstuvwxyz
    efghijklmnopqrstuvwxyz
     fghijklmnopqrstuvwxyz
        ijklmnopqrstuvwxyz
         jklmnopqrstuvwxyz
            mnopqrstuvwxyz
             nopqrstuvwxyz
                qrstuvwxyz
                 rstuvwxyz
                    uvwxyz
                     vwxyz
                        yz
                         z

กฎระเบียบ

  • คุณสามารถเลือกที่จะแสดงผลเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก แต่ต้องสอดคล้องกัน
  • เอาต์พุตไม่สามารถมีช่องว่างภายนอกได้ยกเว้นบรรทัดใหม่ที่เป็นทางเลือก
  • ยอมรับได้ทั้งโปรแกรมหรือฟังก์ชั่น
  • จำนวนการป้อนข้อมูลที่สามารถนำมาผ่านทางรูปแบบที่เหมาะสมใด
  • ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
  • นี่คือเพื่อให้ใช้กฎการตีกอล์ฟตามปกติและรหัสที่สั้นที่สุด (เป็นไบต์) ชนะ

คำตอบ:



8

Python 2 101 99 ไบต์

r=range(input())
for x in sorted(r,key=lambda x:x*-(x&2)):print bytearray([97+i,32][i<x]for i in r)

xsot บันทึกสองไบต์ด้วยการตระหนักถึงความx*-(x&2)พอเพียงว่าเป็นกุญแจการเรียงลำดับ - ครึ่งล่างของภาพที่ได้รับผลกระทบนั้นไม่ได้รับผลกระทบเนื่องจากการsortedรับประกันการเรียงที่เสถียร


คุณไม่สามารถปล่อย a -เพื่อส่งออกบรรทัดในลำดับย้อนกลับซึ่งฉันเชื่อว่าอนุญาตหรือไม่
Neil

ฉันคิดว่าได้x*-(x&2)ผล
xsot



2

JavaScript (ES6), 127 126 ไบต์

n=>[...Array(n).keys()].sort((a,b)=>a*~-(a&2)-b*~-(b&2)).map(i=>` `.repeat(i)+`abcdefghijklmnopqrstuvwxyz`.slice(i,n)).join`\n`

ใช้เคล็ดลับการจัดเรียงของ @ Lynn การเขียนตัวอักษรทั้งหมดนั้นถูกสองไบต์ราคาถูกกว่าการคำนวณ แก้ไข: บันทึก 1 ไบต์ขอบคุณ @ETHproductions เพราะฉันลืมที่จะทราบว่า\nจริง ๆ แล้วหมายถึงอักขระขึ้นบรรทัดใหม่ตามตัวอักษร (ฉันไม่ชอบการขึ้นบรรทัดใหม่ตามตัวอักษรในคำตอบของฉันเมื่อบรรทัดยาวมาก)


บันทึกไบต์ที่สองบนตัวอักษร: btoa`...` ที่จะถูกแทนที่ด้วยผลมาจากการ... atob`abcdefghijklmnopqrstuvwxyzz` (นอกจากนี้คุณสามารถแทนที่\nด้วยบรรทัดใหม่ตามตัวอักษร)
ETHproductions

@ETHproductions ฉันคิดว่าจะใช้การเข้ารหัส ISO แทน UTF ใช่ไหม
Neil

ใช่มันจะ เราอนุญาตให้ใช้ ISO-8859-1 มากกว่า UTF-8 ใน JS หรือไม่
ETHproductions

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