แสดงผล ASCII“ เครื่องหมาย”


10

ถ้าคุณโยนไข่ ASCII ในทิศทางที่กำหนดคุณท้ายด้วยเครื่องหมาย ASCII ขนาด n มัน "เริ่มต้น" ด้วยหนึ่งo(ไข่แดง) และดำเนินการต่อในทิศทางที่กำหนดด้วย "บรรทัด" ซึ่งประกอบด้วย 2 ถึงn * 's *'s ถูกแยกออกจาก 'พื้นที่' หนึ่งและoและทั้งหมดที่ 'สาย' ของ*' s จะถูกคั่นด้วย 'เส้น' ของ 'พื้นที่'

ทิศทางของแท่งอาจเป็นหนึ่งในแปดทิศทางจากoตัวอย่างเช่น:

1 2 3
4 o 5
6 7 8

นี่คือตัวอย่างของเครื่องหมาย ASCII ขนาด 4 ทิศทาง5, 2และ3ตามลำดับ ด้านซ้ายเป็นเครื่องหมาย ASCII จริงและด้านขวาเป็นเครื่องหมายเดียวกัน แต่มี "เส้น" ของ "พื้นที่" แทนที่ด้วย "เส้น" ที่เกิดขึ้นจริง (เช่น-หรือ\หรือ|ขึ้นอยู่กับทิศทาง) เพียงเพื่อชี้แจงสิ่งที่มีความหมายโดย "เส้น" ของพื้นที่

Size 4, direction 5
      *      | | |*
    *        | |*| 
  *   *      |*| |*
o   *       o| |*| 
  *   *      |*| |*
    *        | |*| 
      *      | | |*

Size 4, direction 2
* * * *     * * * *
            -------
 * * *       * * *
            -------
  * *         * *
            -------
   o           o

Size 4, direction 3   
*           *      
            \
* *         *\*    
            \ \
* * *       *\*\*
            \ \ \ 
o * * *     o\*\*\*

ท้าทาย

รับn ≥ 1และหนึ่งใน 8 ทิศทางที่เป็นไปได้เขียนฟังก์ชั่นหรือโปรแกรมที่ส่งออกเครื่องหมาย ASCII ขนาดnในทิศทางที่กำหนด

อินพุตและเอาต์พุต

อนุญาตรูปแบบอินพุตที่สอดคล้องและสมเหตุสมผลใด ๆ คุณไม่จำเป็นต้องแมปทิศทางไปยังจำนวนเต็ม 1 ถึง 8 ในแบบเดียวกับที่ฉันทำ - หากวิธีอื่นในการระบุทิศทางนั้นง่ายขึ้นให้ไปข้างหน้า แต่พูดในสิ่งที่คุณทำถ้ามันไม่ชัดเจน

เอาท์พุทจะประกอบด้วยo, *ช่องว่าง (U + 0020) และการขึ้นบรรทัดใหม่ (U + 000A) ที่ผลิตเครื่องหมายแอสกี นำหน้า, ต่อท้าย, หรืออนุญาตให้ใช้ช่องว่างเพิ่มเติมในบรรทัดใดก็ได้

กฎระเบียบ

นี่คือรหัสกอล์ฟใช้กฎมาตรฐาน

ตัวอย่างเพิ่มเติม

Size 1, any direction
o

Size 3, direction 6
* * o

  * *

    *

Size 5, direction 7
    o    

   * *

  * * *

 * * * *

* * * * *

คำตอบ:


3

ถ่าน , 20 18 ไบต์

↘EN×*⊕ιM↗oUE¬﹪η²⟲η

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด คำอธิบาย:

↘EN×*⊕ι

วาดแผ่นสามเหลี่ยมในแนวทแยง

M↗o

วางไข่

UE¬﹪η²

สำหรับการหมุนแบบสม่ำเสมอให้ขยายแผ่นสีในแนวนอนเพื่อให้ตรงกับข้อกำหนดของเอาต์พุต ข้อกำหนดนี้ไม่ตรงกับความคาดหวังตามปกติของ Charcoal ลองออนไลน์! (verbose) สำหรับลักษณะที่ไม่มี

⟲η

หมุนแผ่นสีตามที่ต้องการโดยใช้รหัสต่อไปนี้สำหรับเส้นทาง:

321
4o0
567

รุ่น37 31 ไบต์นี้หลีกเลี่ยงช่องว่างที่ไม่เกี่ยวข้องโดยการหมุนในมุมฉากเท่านั้น:

¿﹪η²G↘←θ*«↘Eθ×*⊕ι↗»oUE¹﹪η²⟲⊗÷η²

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด



1

Python 2 , 185 ไบต์

lambda n,d:'\n'.join(g([(d/4*(n+~j)*' '+('*o'[[j>n-2,j<1][d/4]]+' *'*j)*i).ljust(2*n-1)for j in range(n)for i in(0,1)][1:],d%4))
g=lambda a,n:n and g(map(''.join,zip(*a))[::-1],n-1)or a

ลองออนไลน์!

การกำหนดหมายเลขคือตั้งแต่ 0 ถึง 7 ดังต่อไปนี้:

1 6 0
7 o 5
2 4 3

หมายเหตุ: ส่วนใหญ่ของการทำงานคือการสร้างรูปแบบพื้นฐานสำหรับ (ในระบบเลขของฉัน) และ0 4จากนั้นฟังก์ชันgจะหมุนอาร์เรย์a90 องศาd%4ซ้ำผ่านการเรียกซ้ำเพื่อสร้างผลลัพธ์อื่น

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