Ảnh tự sướng


20

Mục tiêu:

Một guru đã từng nói một bức ảnh tự sướng hoàn hảo là tốt nhất là chụp theo đường chéo từ góc trên bên trái. Ảnh tự sướng mã gần giống như Quine - nhưng xoay 45 độ theo chiều kim đồng hồ. Nhiệm vụ của bạn là mã hóa một chương trình tạo ra một bức ảnh tự sướng.

Quy tắc:

  1. Bạn có thể sử dụng bất kỳ ngôn ngữ lập trình.
  2. Các chương trình của bạn không nên lấy bất kỳ đầu vào nào từ tệp, tên tệp, mạng hoặc bất cứ thứ gì khác.

Tiêu chí bắt buộc:

Selfies là về động cơ và nền tảng, do đó, các khoảng trống (và các nội dung không hiển thị khác như nguồn cấp dữ liệu và như vậy) không được tính là một phần của số lượng ký tự. Tất cả các ký tự hiển thị được giới hạn để xuất ra ở vị trí xoay 45 độ chính xác trong khi tất cả các ký tự không nhìn thấy không bị giới hạn ở vị trí xoay 45 độ chính xác. Giống như một bảng màu trên một bức ảnh tự sướng bình thường, bắt buộc đối với một bức ảnh tự sướng mã là nó chứa ít nhất 16 ký tự này: {a-zA-Z0-9}

Thí dụ:

Nếu ví dụ này là mã nguồn hợp lệ:

Output abcd
Output efgh
Output ijkl
Output mnop

Mã ví dụ sẽ xuất ra điều này:

   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

Đây là mã golf, mã nguồn ngắn nhất tính theo byte thắng!


2
16 độc nhất [a-zA-Z0-9]?
Tối ưu hóa

Làm thế nào chúng ta sẽ ghi một bài trong Whitespace?
Sp3000

Khoảng trắng là không thể, vì không gian trống không được tính. Có, 16 ký tự duy nhất [a-zA-Z0-9], không phải là tổng số ít nhất 16 ký tự.
Plarsen

Thách thức này thiên vị đối với các ngôn ngữ yêu cầu ngắt dòng trong mã của họ. Việc hỗ trợ multiline cho thử thách này khó hơn nhiều.
nderscore

1
@nderscore Có lẽ bạn đúng về điều đó. Vâng, tất cả chúng ta đang ở đây cho vui, phải không? Làm tốt nhất trong tình huống! ;)
Plarsen

Câu trả lời:


7

Javascript ( ES6 ), 72 byte

16 ký tự chữ và số độc đáo pallete: fjalert0plcgmixn

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

mvà các icờ được thêm vào biểu thức chính quy để đáp ứng các yêu cầu bảng màu tối thiểu.


4

CJam, 30 28 25 byte

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

Điều này khá dài do 16 ký tự từ A-Za-z0-9 giới hạn.

Đây là một biến thể không tầm thường của một quine tiêu chuẩn trong CJam. Sẽ thêm giải thích sớm.

CẬP NHẬT - 2 byte được lưu nhờ Martin, 3 byte được lưu nhờ Dennis

Dùng thử trực tuyến tại đây


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+=' ';}}

Thực tế có 326 byte, nhưng nếu tôi hiểu đúng các quy tắc, tôi không phải đếm 14 khoảng trắng.

Chương trình về cơ bản là một quine Java tiêu chuẩn, cộng với rất nhiều khoảng trắng.


1

Python 3, 139 ký tự - 10 dấu cách = 129 ký tự

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))]

Vì mã của tôi là một dòng, tất cả những gì tôi phải làm là in chương trình theo đường chéo. Chuỗi của tôi có tên lạ 'sjxd' để mã của tôi có thể có 16 ký tự chữ và số duy nhất.


0

CSS, 69 byte

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

Đặt trong một trang html trống để tránh xung đột với các thẻ khác.

Bảng màu: stylebfortanm45dgiplck(22 ký tự)


0

MATLAB, 40 byte

Khó khăn với toàn bộ điều đệ quy - làm thế nào để bạn in mã nguồn của riêng bạn khi thêm mã vào một chuỗi sẽ được in làm tăng kích thước của chính mã nguồn. Nhưng, không bao giờ ít hơn, những điều sau đây sẽ làm điều đó:

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

Các 123456;bit là có để đáp ứng yêu cầu 16 nhân vật độc đáo. Sau đây được sử dụng:

'()123456;adgips

Mã trên không hoạt động trên Octave vì một số lý do, nhưng không hoạt động trong MATLAB. Dưới đây là đầu ra:

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

Bây giờ nếu bạn không quan tâm đến ans=bit mà MATLAB thích đặt, phần sau sẽ hoạt động với 32 byte :

12345678;diag('12345678;diag()')
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.