소스 코드 셀카


20

목표:

한 전문가는 완벽한 코드 셀카가 왼쪽 위 모서리에서 대각선으로 가장 잘 찍힌다고 말했다. 코드 셀카는 거의 Quine와 비슷하지만 시계 방향으로 45도 회전합니다. 당신의 임무는 코드 셀카를 출력하는 프로그램을 코딩하는 것입니다.

규칙 :

  1. 모든 프로그래밍 언어를 사용할 수 있습니다.
  2. 프로그램은 파일, 파일 이름, 네트워크 또는 다른 어떤 것도 입력하지 않아야합니다.

필수 기준 :

셀카는 동기와 배경에 관한 것이므로 공백 (및 줄 바꿈과 같은 보이지 않는 다른 내용)은 문자 수의 일부로 계산되지 않습니다. 보이는 모든 문자는 올바른 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
독특한 [a-zA-Z0-9]의 16?
Optimizer

공백에서 제출물을 어떻게 채점합니까?
Sp3000

공백은 계산되지 않으므로 공백은 불가능합니다. 예, 고유 한 [a-zA-Z0-9] 16 개, 총 16 자 이상이 아닙니다.
Plarsen

이 문제는 코드에서 줄 바꿈이 필요한 언어에 대해 편향되어 있습니다. 이 과제에 대해 여러 줄을 지원하는 것이 훨씬 어렵습니다.
nderscore

1
@nderscore 아마도 당신은 그것에 대해 맞을 것입니다. 글쎄, 우리는 모두 재미를 위해 여기 있습니다. 상황에서 최선을 다하십시오! ;)
Plarsen

답변:


7

자바 스크립트 ( ES6 ), 72 바이트

16 개의 고유 한 영숫자 팔레트 : fjalert0plcgmixn

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

mi플래그는 최소 팔레트 요구 사항을 충족하기 위해 정규 표현식에 추가됩니다.


4

CJam, 30 28 25 바이트

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

16 자로 A-Za-z0-9제한 되어 있기 때문에 다소 길다 .

이것은 CJam의 표준 quine의 사소한 변형입니다. 곧 설명을 추가 할 것입니다.

업데이트-Martin 덕분에 2 바이트 절약, Dennis 덕분에 3 바이트 절약

여기에서 온라인으로 사용해보십시오


1

자바, 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 공백을 계산할 필요가 없습니다.

이 프로그램은 기본적으로 표준 Java quine과 많은 공백입니다.


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

위의 코드는 어떤 이유로 옥타브에서 작동하지 않지만 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.