Sourcecode เซลฟี่


20

วัตถุประสงค์:

กูรูเคยกล่าวว่าเซลฟี่รหัสที่สมบูรณ์แบบนั้นดีที่สุดในแนวทแยงมุมจากมุมซ้ายบน รหัสเซลฟี่คล้ายกับ Quine - แต่หมุน 45 องศาตามเข็มนาฬิกา ภารกิจของคุณคือการให้รหัสโปรแกรมที่แสดงผลเซลฟี่

กฎ:

  1. คุณสามารถใช้ภาษาการเขียนโปรแกรมใด ๆ
  2. โปรแกรมของคุณไม่ควรรับอินพุตจากไฟล์ชื่อไฟล์เครือข่ายหรือสิ่งอื่นใด

เกณฑ์บังคับ:

Selfies เป็นเรื่องเกี่ยวกับแรงจูงใจและพื้นหลังดังนั้นพื้นที่ว่าง (และเนื้อหาที่มองไม่เห็นอื่น ๆ เช่น linefeeds และอื่น ๆ ) จะไม่นับรวมเป็นส่วนหนึ่งของการนับจำนวนอักขระ อักขระที่มองเห็นทั้งหมดถูก จำกัด ให้แสดงผลในตำแหน่งที่หมุนได้ 45 องศาที่ถูกต้องในขณะที่อักขระที่มองไม่เห็นทั้งหมดไม่ได้ถูก จำกัด ไว้ที่ตำแหน่งที่หมุนได้ 45 องศาที่ถูกต้อง เช่นเดียวกับจานสีในเซลฟี่ปกติบังคับให้ใช้เซลฟีรหัสคือมันมีอย่างน้อย 16 ตัวอักษรเหล่านี้: {a-zA-Z0-9}

ตัวอย่าง:

หากตัวอย่างนี้เป็นซอร์สโค้ดที่ถูกต้อง:

Output abcd
Output efgh
Output ijkl
Output mnop

โค้ดตัวอย่างควรแสดงผลลัพธ์ดังนี้:

   O         
  O u
 O u t
O u t p
 u t p u
  t p u t
   p u t
    u t   a  
     t   e b
        i f c
       m j g d
        n k h
         o l
          p

นี่คือโค้ดกอล์ฟที่สั้นที่สุดในหน่วยไบต์!


2
มี 16 อันที่ไม่ซ้ำกัน [a-zA-Z0-9]?
เครื่องมือเพิ่มประสิทธิภาพ

เราจะให้คะแนนการส่งใน Whitespace ได้อย่างไร
Sp3000

ช่องว่างไม่สามารถทำได้เนื่องจาก blankspaces ไม่นับ ใช่มี 16 [a-zA-Z0-9] ที่ไม่ซ้ำกันซึ่งไม่รวมทั้งหมด 16 ตัวอักษร
Plarsen

ความท้าทายนี้มีอคติต่อภาษาที่ต้องมีการแบ่งบรรทัดในรหัส มันยากมากที่จะสนับสนุน multiline สำหรับความท้าทายนี้
nderscore

1
@nderscore บางทีคุณอาจถูกต้องเกี่ยวกับเรื่องนั้น เราทุกคนอยู่ที่นี่เพื่อความสนุกใช่มั้ย ทำสิ่งที่ดีที่สุดจากสถานการณ์! ;)
Plarsen

คำตอบ:


7

Javascript ( ES6 ), 72 ไบต์

16 อักขระตัวอักษรผสมตัวเลขที่ไม่ซ้ำกัน: fjalert0plcgmixn

(f=j=>alert(`(f=${f})(0)`.replace(/./gmi,x=>' '.repeat(j++)+x+'\n')))(0)

mและiแฟล็กจะถูกเพิ่มใน regexp เพื่อตอบสนองความต้องการจานสีขั้นต่ำ


4

CJam, 30 28 25 ไบต์

{95c103ic]seeSf.*N*Xmr}_g

นี่คือชนิดยาวเนื่องจากอักขระ 16 ตัวจากA-Za-z0-9ขีด จำกัด

นี่เป็นตัวแปรที่ไม่สำคัญสำหรับควินมาตรฐานใน CJam จะเพิ่มคำอธิบายในไม่ช้า

อัปเดต - บันทึก 2 ไบต์ด้วยมาร์ตินและบันทึกลง 3 ขอบคุณขอบคุณเดนนิส

ลองออนไลน์ได้ที่นี่


1

Java, 312

class Z{public static void main(String[]a){String s="class Z{public static void main(String[]a){String s=%c%s%1$c,t;for(int i=0,j;i<326;System.out.println(t+s.format(s,34,s).charAt(i++)))for(j=i,t=%1$c%1$c;j-->0;)t+=' ';}}",t;for(int i=0,j;i<326;System.out.println(t+s.format(s,34,s).charAt(i++)))for(j=i,t="";j-->0;)t+=' ';}}

มีจริง 326 ไบต์ แต่ถ้าฉันเข้าใจกฎอย่างถูกต้องฉันไม่ต้องนับ 14 ช่องว่าง

โปรแกรมดังกล่าวเป็นจาวามาตรฐานทั่วไปรวมถึงพื้นที่ว่างจำนวนมาก


1

Python 3, 139 ตัวอักษร - 10 ช่องว่าง = 129 ตัวอักษร

sjxd='sjxd=%r;[print(" "*i+(sjxd%%sjxd)[i]) for i in range(len(sjxd%%sjxd))]';[print(" "*i+(sjxd%sjxd)[i]) for i in range(len(sjxd%sjxd))]

เนื่องจากรหัสของฉันเป็นหนึ่งบรรทัดทั้งหมดที่ฉันต้องทำคือพิมพ์โปรแกรมตามแนวทแยงมุม สตริงของฉันมีชื่อแปลก ๆ 'sjxd' เพื่อให้โค้ดของฉันมีอักขระตัวอักษรผสมตัวเลขที่ไม่ซ้ำกัน 16 ตัว


0

CSS, 69 ไบต์

<style>:before,*{transform:rotate(45deg;display:block;content:'<style>

ใส่ในหน้า html ที่ว่างเปล่าเพื่อหลีกเลี่ยงความขัดแย้งกับแท็กอื่น ๆ

จานสี: stylebfortanm45dgiplck(22 ตัวอักษร)


0

MATLAB, 40 ไบต์

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

123456;disp(diag('123456;disp(diag())'))

123456;บิตจะมีการตอบสนองความจำเป็นต้องใช้ 16 ตัวอักษรที่ไม่ซ้ำกัน มีการใช้งานดังต่อไปนี้:

'()123456;adgips

รหัสด้านบนใช้ไม่ได้กับ Octave ด้วยเหตุผลบางอย่าง แต่ทำงานใน MATLAB ด้านล่างเป็นผลลัพธ์:

1                  
 2                 
  3                
   4               
    5              
     6             
      ;            
       d           
        i          
         s         
          p        
           (       
            d      
             i     
              a    
               g   
                (  
                 ) 
                  )

ตอนนี้ถ้าคุณไม่สนใจans=บิตที่ MATLAB สนุกกับการใส่สิ่งต่อไปนี้จะใช้งานได้32 ไบต์ :

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