행, 열, 대각선, 블록


13

양의 정수 N에 대해 너비가 N 자이고 키가 N자인 정사각형 코드 블록을 작성하십시오.

예를 들어, N은 5이고 블록은 다음과 같습니다.

ThisI
sMy5B
y5Cod
eBloc
kOkay

이 블록은 다음과 같이 동작해야합니다.

  1. 상단 행을 추출하여 프로그램으로 실행할 때 정확한 텍스트 row를 표준 출력으로 인쇄해야합니다.

    예를 들어 ThisI인쇄 row합니다.

  2. 왼쪽 열이 추출되어 프로그램으로 실행될 때 정확한 텍스트 col를 표준 출력으로 인쇄해야합니다.

    예를 들어 Tsyek인쇄 col합니다.

  3. 왼쪽 상단에서 오른쪽 하단까지 메인 대각선이 추출되어 프로그램으로 실행될 때 정확한 텍스트 dia를 표준 출력으로 인쇄해야합니다.

    예를 들어 TMCoy인쇄 dia합니다.

  4. 개행 (선택적 후행 개행 포함)을 포함 하여 전체 블록을 프로그램으로 실행하는 경우 정확한 텍스트 blk를 표준 출력으로 인쇄해야합니다.

    예를 들어

    ThisI
    sMy5B
    y5Cod
    eBloc
    kOkay
    

    인쇄 blk합니다.

세부

  • 네 가지 프로그램 모두 동일한 프로그래밍 언어로 실행됩니다.
  • 원래 블록 의 N 2 문자는 줄 종결자가 아닌 다른 문자 일 수 있습니다 .
  • 언어에 stdout이 없으면 다른 일반적인 출력 방법을 사용할 수 있습니다. 네 프로그램 모두에서 동일한 방법이어야합니다.

원래 블록에 가장 적은 고유 문자 (줄 바꿈 제외)가 포함 된 제출물이 이깁니다. Tiebreaker는 더 작은 N으로 제출합니다.


어떤 두 기호 난해한 언어로 된 해결책이 있다는 것을 감안할 때, 이것이 이것을 가장 작은 N로 짜는 해결책이 될 것이라고 생각합니다.
xnor

@xnor 아마. 비록 분명한 1 개의 언어 응답이 가능성의 영역을 벗어난 것은 아닙니다. 그럼에도 불구하고,이 스코어링 방법은 가장 작은 N 승을 먼저하는 것보다 더 흥미 롭습니다.
Calvin 's Hobbies

행과 열 프로그램의 길이가 같으면 Lenguage는 어떻게 작동합니까?
xnor

@ xnor 아, 맞아. 작동하지 않습니다.
Calvin 's Hobbies

비 차단 프로그램도 후행 줄 바꿈으로 끝날 수 있습니까?
jimmy23013

답변:


6

> <> (물고기) , 3 개의 고유 문자 (N = 2000)

코드 용도 1-스택의 임의의 숫자를 넣어 p에 (자기) 스택의 최상위 숫자 3에 기초하여 코드를 수정. 예를 들어, !at 위치를 두면 normal> <>와 0 0같 으며이 됩니다 .003b*pp1-111-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1--11-11-p

수정 후 명령 포인터 (IP)는 코드를 감싸고 수정 된 부분을 실행합니다. "블록"의 경우, IP는 "행"의 경우와 다르도록 추가 수정 (다시 경로 재 지정)되도록 경로 재 지정됩니다. "행"의 경우 동일한 두 리디렉션이 발생하지만 그 사이에 코드가 없으므로 아무런 영향을 미치지 않습니다.

4 가지 경우에 대해 최종 생성 된 코드 (변경되지 않은 p1-부분 생략 ) :

row:      "wor"\ooo;

column:   "loc"ooo;

diagonal: "dia"ooo;

block:    "wor"\"klb"ooo;

코드 크기는 4MB이며 여기 에서 코드에 액세스 할 수 있습니다 . (실행하는 데 어려움이 없습니다.)

제너레이터 python3 프로그램은 여기에서 액세스 할 수 있습니다 .



8

배쉬, 고유 문자 19 개, N = 19

trap echo\ row exit
t=t trap exit      
t=t echo blk       
exit               
=                  
t    e             
      c            
e      h           
c       o          
h                  
o         d        
           i       
c           a      
o                  
l                  
  • 첫 번째 행은 trap echo\ row exit입니다. 이 원인이 echo row실행될 때 스크립트가 종료 (단지 첫 번째 줄)
  • 첫 번째 열은 ttt=t echo col
  • 대각선은 t=tt echo dia
  • 전체 블록은 첫 번째 라인에서 설정된 EXIT 핸들러를 취소 한 echo blk다음 종료됩니다.

1
소문자 exit를 사용 하여 고유 문자를 4 씩 줄일 수 있습니다. exit명령을 다음 줄로 이동하고 모든 세미콜론을 공백으로 바꿀 수도 있습니다.
jimmy23013

6

> <> , 14 개의 고유 한 문자, N = 10

"wor"\ooo;
     "    
l a  k    
o  i l    
c   db    
"    "    
o    oo   
o    o o  
o    o  o 
;    ;   ;

2D 언어로 매우 간단합니다. 유일한 까다로운 부분은 우리가 필요하다 \구별 row하고 blk.


randomra p1-는 세 가지 char 솔루션을 제공하지만 실제로 생성하는 데 성 가실 것입니다 (아마도 이길 수는 없습니다).
Sp3000

3

Brainfuck, 2 개의 고유 한 문자, N = 378

규칙이 약간 구부러 질 수 있습니다.

이 프로그램은 다소 거대 하기 때문에 Pastebin에 링크되어 있습니다 .

row, coldia프로그램은 간단합니다. 올바른 ASCII 코드에 도달 할 때까지 바이트 셀을 증가시킨 다음 출력합니다. 문자가 이미 지나간 경우 셀이 넘칠 때까지 증가하여 0에서 다시 시작할 수 있습니다.

blk프로그램은 약간의 규칙 굽힘이 발생하는 곳입니다. blk챌린지에서 요청한대로 "정확한 텍스트 " 를 인쇄하기 위해 백 스페이스가 사용되며 (ASCII 코드 8)이를 지원하기 위해 디스플레이 콘솔 / 터미널이 필요합니다. row/ col/ dia프로그램 에서 잘못된 값 이 인쇄 될 때마다 몇 가지 백 스페이스 제어 코드를 출력하여 제거합니다. 일을 단순화하기 위해 한 지점에서 출력 된 모든 잘못된 값이 인쇄 가능한 ASCII 범위의 일부가되도록했습니다.


2

C (gcc) , 26 개의 고유 한 문자, N = 29

*w;main(){printf(w?w:"row");}
ww;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;/*;;;;;;;;;;;;;;;;;;;;;;;;
m;;m;;;;;;;;;;;;;;;;;;;;;;;;;
a;;;a;;;;;;;;;;;;;;;;;;;;;;;;
i;;;;i;;;;;;;;;;;;;;;;;;;;;;;
n;;;;;n;;;;;;;;;;;;;;;;;;;;;;
(;;;;;;(;;;;;;;;;;;;;;;;;;;;;
);;;;;;;);;;;;;;;;;;;;;;;;;;;
{;;;;;;;;{;;;;;;;;;;;;;;;;;;;
p;;;;;;;;;p;;;;;;;;;;;;;;;;;;
r;;;;;;;;;;r;;;;;;;;;;;;;;;;;
i;;;;;;;;;;;i;;;;;;;;;;;;;;;;
n;;;;;;;;;;;;n;;;;;;;;;;;;;;;
t;;;;;;;;;;;;;t;;;;;;;;;;;;;;
f;;;;;;;;;;;;;;f;;;;;;;;;;;;;
(;;;;;;;;;;;;;;;(;;;;;;;;;;;;
";;;;;;;;;;;;;;;;";;;;;;;;;;;
c;;;;;;;;;;;;;;;;;d;;;;;;;;;;
o;;;;;;;;;;;;;;;;;;i;;;;;;;;;
l;;;;;;;;;;;;;;;;;;;a;;;;;;;;
";;;;;;;;;;;;;;;;;;;;";;;;;;;
);;;;;;;;;;;;;;;;;;;;;);;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
};;;;;;;;;;;;;;;;;;;;;;;};;*/
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;*w="blk";

온라인으로 사용해보십시오!


1

루비, 24 개의 고유 문자, N = 17

trap(0){$><<:row}
rr=a=:blk;%;00000
a0a00000000000000
p00p0000000000000
(000(000000000000
00000000000000000
)00000)0000000000
{000000{000000000
$0000000$00000000
>00000000>0000000
<000000000<000000
<0000000000<00000
:00000000000:0000
c000000000000d000
o0000000000000i00
l;;trap(0){$><<a;
};000000000000;{}

온라인으로 사용해보십시오!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.