회전 한 횟수를 출력하는 직사각형 프로그램 작성


63

제목이 다 나와 있습니다. 당신의 목표는 회전하고 다시 실행할 수있는 aw x h 직사각형의 문자를 형성하는 프로그램을 작성하여 수행 된 90 ° 반 시계 방향 (CCW) 회전 수를 출력하는 것입니다.

예를 들어, 3 × 2 프로그램 인 경우

abc
def

문제를 해결하고 처음에는 0을 출력하고 90 ° CCW의 연속 회전

cf    fed    da
be    cba    eb
ad           fc

1, 2 및 3을 각각 출력합니다.

주석을 사용하면이 작업이 대부분의 언어가됩니다. 예를 들어 루비에서는 7x7 사각형으로 할 수 있습니다.

###p###
### ###
###1###
p 0#2 p
###3###
### ###
###p###

문제는 어떤 종류의 주석 없이이 작업을 수행 하는 것입니다.

채점

당신의 점수는 w * h, 사각형의 면적입니다. 개행은 제외됩니다. 즉, 코드 골프 줄 바꿈은 계산되지 않습니다.

Ruby 예제의 점수는 49 점입니다 (물론 주석이 있으므로 유효하지 않습니다).

노트

  • 코드는 실제로 줄 끝에 문자가 없어야하는 직사각형이어야합니다.
  • 원하는 경우 0 1 2 3 대신 다른 유효한 "mod 90 °"값을 출력 할 수 있습니다. 따라서 0 대신 8이 좋고 3이 아닌 -1이 좋습니다.
  • 출력은 콘솔 또는 파일로 갈 수 있습니다.
  • 표준 허점이 적용됩니다.

나는 이것이 나의 첫 번째 질문이 실제로 어떤 사람들에게 흥미를 갖기를 바랍니다. 즐겨!


1
주석이 무엇인지 더 구체적으로 설명하기 위해 주석은 평가되지 않은 코드입니까? 파싱되지 않은 코드?
isaacg

나는 당신의 언어의 전통적인 "댓글 문자들"중 어느 것도 4 개의 회전 된 버전 중 어느 것도 나타나지 않아야한다는 것을 의미합니다. 따라서 C ++의 경우 서로 옆에 두 개의 슬래시가 나타나지 않아야하지만 하나만 사용할 수도 있습니다. 마찬가지로 / *도 마찬가지입니다. 나는 그것을 명확히하기를 바랍니다.
Calvin 's Hobbies

주석 문자가없는 언어는 어떻습니까?
isaacg

echo 0;exit;ebash 와 같은 코드 가 허용됩니까?
jimmy23013

의견을 제시 할 방법이 없다면 걱정할 필요가 없습니다. @ user23013 bash는 괜찮습니다.
Calvin 's Hobbies

답변:


43

APL (1x3 = 3)

5!3

이 솔루션은 올바른 모드 4 인 모든 출력이 작동한다는 추가 규칙을 사용합니다.

APL에서는 일반적으로 또는 로 알려진 요소 x!y를 선택할 수있는 방법 입니다. 각 회전이 올바른 답을 제공하는지 확인합시다.xybinom(y,x)choose(y,x)

0 회전

5!3

3에서 5 개의 요소를 선택할 수있는 방법이 없으므로 0이 자동으로 인쇄됩니다.

1 CCW 회전

3
!
5

APL은 각 행을 행복하게 평가하여 number 3, operator !, number를 가져 와서 5마지막 마지막 ( 5) 인 1 mod 4 만 인쇄합니다 .

2 CCW 회전

3!5

이다 binom(5,3)인, (5*4*3*2*1)/(3*2*1)/(2*1) = 102 모드 4이다.

3 CCW 회전

5
!
3

이전과 마찬가지로 마지막으로 평가 된 값만 3프린터입니다.

실제로 APL을 모르므로 설명에 문제가 있으면 알려주십시오. 이 사이트 의 첫 번째 언어로 시행 착오를 통해 그것을 발견했습니다 .

  1. 식의 결과를 자동으로 인쇄
  2. 여러 줄의 표현식이 주어지면 마지막 줄만 출력합니다.
  3. 작업자가 한 줄에 혼자 서있는 경우 문제가 없습니다
  4. 연산자를 가져옵니다
  5. 비대칭 (aRb! = bRa)이고 다양한 숫자를 반환 할 수있을 정도로 유연한 단일 문자 산술 이진 연산자가 있습니다.

(5)의 경우 APL dyadic 함수 목록으로 내려갔습니다 . 첫 번째 후보 작업은 /C와 Python 2 의 정수 나누기 이지만 APL 나누기 ÷는 부동 소수점을 제공합니다. 지수는 유혹 때문이 아니라 실패 aa^b같은 패리티를 가지고 있지만 연속 회전 (하지 않는 한에 의해 입수되는 b=0,하지만 b^a=0). <give 01180도 간격 과 같은 부울 연산자 는 작동하지 않습니다. 마지막으로 이항 연산자를 찾았습니다.! 일부를 얻을 때까지 숫자를 시도했습니다.

Quincunx에게 2x2보다 작은 솔루션이 있다고 확신 해주셔서 감사합니다.


6
사람, 비의 언어를 사용하고 승리 하는 답변을 보는 것이 좋습니다 .
스튜어트 P. 벤틀리

규칙에 따라 가장 짧기 때문에이 답변을 수락했지만 Ventero의 답변 ( codegolf.stackexchange.com/a/33162/26997 )을 매우 명쾌한 언급 으로 만들고 싶습니다 . 그것은 문제의 진정한 본질을 따릅니다.
Calvin 's Hobbies

또한 J에서 정확한 형식으로 작동합니다.
ɐɔıʇǝɥʇuʎs

실제로 APL은 90 ° 회전에서 3과 5를 모두 인쇄하지 않습니까?
FUZxxl

@ FUZxxl 나는 이것이 ngn / apl에서만 작동한다고 생각합니다.
Adám

40

루비, 7 × 9 (63)

 30;p  
0||p=p 
0|0;p;p
;p;p|p;
p=p ||0
;p   p;
2||p =p
 00;1  
     p 

다른 솔루션보다 조금 길지만 적어도이 솔루션은 암시 적 인쇄 또는 규칙 남용에 의존하지 않습니다. 네 회전 모두에 대해 전체 코드가 파싱되고 일부 단락 이외의 모든 코드가 실행됩니다. 놀랍게도 코드에는 절대 대칭이 없습니다

이 솔루션은 p같은 이름의 변수가 이미 정의 된 경우에도 함수 를 호출 할 수 있다는 사실에 의존 합니다 (숫자를 인쇄하는 데 사용됨). 예를 들어, 변수 를 인수로 사용 p p하여 함수 p를 호출하는 것 p(따라서 값을 인쇄 p)

코드에서 사용되는 일부 공통 표현식에 대한 설명 :

  • p: 위에서 언급했듯이 이것은 함수 호출이거나 변수입니다. 변수가 정의 p되어 있지 않으면 인수없이 함수 를 호출하여 아무것도 수행하지 않고를 반환합니다 nil.
  • p p: 변수를 인쇄합니다 p.
  • p|x: p함수 인 경우이 값과 동일 nil|x하며 값에 따라 true / false를 반환합니다 x. p정수인 경우 비트 단위입니다. 어느 쪽이든,이 진술은 부작용이 없습니다.
  • p=p||x: p||=x구문 상 유효하고 반대로 전환 할 수 없다는 이점이있는 (조건부 할당)과 사실상 동일 합니다.

대칭 버전 (9 × 10 = 90)

    p    

  0 * 0  
  00100  
  0||2* p
p *0||0  
  00300  
  0 * 0  

    p    

가장 짧은 대칭 솔루션입니다 (C 2 인쇄 할 숫자를 무시할 때 ).

테스트 스크립트

다음은 위 코드를 확인하는 테스트 스크립트입니다 ( #행 끝에 공백이 제거되어 실행 전에 제거되도록 행 끝에 추가됨).

rotate=->s{s.split($/).map{|i|i.chars.reverse}.transpose.map(&:join).join($/)}

s=<<EOD.gsub(?#,"")
 30;p  #
0||p=p #
0|0;p;p#
;p;p|p;#
p=p ||0#
;p   p;#
2||p =p#
 00;1  #
     p #
EOD


puts ">>> 0°"
eval s
puts ">>> 90°"
eval rotate[s]
puts ">>> 180°"
eval rotate[rotate[s]]
puts ">>> 270°"
eval rotate[rotate[rotate[s]]]

10
가장 짧은 것은 아니지만 이것은 내가 찾던 난독 한 광채의 종류입니다. D
Calvin 's Hobbies

1
@ Calvin'sHobbies 이것은 "줄 끝에 문자가없는 코드는 실제로 직사각형이어야합니다"제한을 충족합니까?
Joshua Taylor

@JoshuaTaylor 그것은 직사각형이며 일부 줄은 공백으로 채워져 있습니다 (관심있는 한 문자입니다). 그것이 어떤 이유로 든 제한을 충족시키지 못하면, 대신 세미콜론으로 줄을 채울 수도 있습니다.
Ventero

@Ventero 확실히이 법이 있기를 바랍니다. 나는 그 질문의 의미를 이해하려고 노력하고 있습니다.
Joshua Taylor

1
공백이있는 @Ventero Padding (또는 주석과 줄 바꿈 이외의 다른 것)은 괜찮습니다.
Calvin 's Hobbies

33

GolfScript, 4 (2x2)

43
12

인쇄 4312이다 0(모드 4). 회전 인쇄 3241(1 mod 4), 2134(2 mod 4) 및1423 (3 mod 4).

프롬프트 :

원하는 경우 0 1 2 3 대신 다른 유효한 "mod 90 °"값을 출력 할 수 있습니다. 따라서 0 대신 8이 좋고 3이 아닌 -1이 좋습니다.

실제로 이것이 작동하는 많은 숫자 세트가 있습니다. 이 파이썬 프로그램에서 이것을 발견했습니다.

def f(a,b,c,d):
    return int("%i%i%i%i"%(a,b,c,d))
for a in range(10):
    for b in range(10):
        for c in range(10):
            for d in range(10):
                candidate = f(a,b,c,d) % 4 == 0
                candidate &= f(b,d,a,c) % 4 == 1
                candidate &= f(d,c,b,a) % 4 == 2
                candidate &= f(c,a,d,b) % 4 == 3
                if candidate:
                    print("%i, %i, %i, %i"%(a,b,c,d))

프로그램이 0s를 출력하지만 (아마도 작동하지 않을 수 있음) 유효한 솔루션은 다음과 같은 형식입니다.

ab
cd

어디 a∈{4,8}, b∈{3,7}, c∈{1,5,9}, d∈{2,6}. (a,b,c,d)∈{4,8}×{3,7}×{1,5,9}×{2,6}24 솔루션 인 IE .


7
매우 영리한. 나는 솔직히 여분의 규칙이 무해하다고 생각했다.
Calvin 's Hobbies

4
@Everybody이 프로그램은 가능한 가장 작은 프로그램이 아닙니다. 2x1이 가능하며 가장 작습니다. 그러니 일하세요!
Justin

1
@isaacgYour score is w*h, the area of your rectangle. Newlines are excluded. In other words, code-golf, newlines not counted.
undergroundmonorail

2
@Quincunx 그럼 게시하십시오!
tomsmeding

1
여기서 언어가 단순히 평가되는 마지막 숫자를 인쇄한다고 가정하면 1 * n (1 숫자) 솔루션이 있다고 생각하지 않습니다 n. 이것은 정수의 패리티가 가장 오른쪽 자릿수의 패리티와 같지만 90도 회전하면 다른 패리티가되어야합니다. 따라서이 2*2접근법의 최소값입니다.
xnor

30

파이썬-23 x 23 = 529

좋아,이 질문은 이미 승자가되었지만 Python 솔루션은 아직 없습니다. 그래서 나는 그것에 대해 생각했습니다-심하게! - print다른 방향 중 하나에서 구문 분석 할 때 부피가 큰 명령을 오류없이 생성 하는 방법을 찾았습니다 .

돌파구는 다음과 같습니다.

'"\'';forward_code;"';backward_code;""\'"''

forward_code이 실행되는 동안backward_code 문자열의 일부이므로 인쇄되지 않습니다. 이것은 뒤로 읽을 때 정확히 다른 방법입니다.

따라서 두 가지 방향을 더하고 미세 조정하여 모든 따옴표가 올바르게 일치하도록 조정하면 다음 솔루션으로 끝납니다.

''"''""''"''"''"'"''""'
"  ""                 "
"  \\                 "
'"\'';print 1;"'""\'"''
'"\''"';3 tnirp;""\'"''
"  ;""                "
"  p'                 "
'  r;                 '
'  i2                 '
"  n                  "
"  tt                 "
'   n                 '
'  4i                 '
"  ;r     .-=<>=-.    "
' \"p    /__----__\   '
"  ';'  |/ (')(') \|  "
"  ""    \   __   /   "
'  ""    .`--__--`.   '
"  \\   /    :|    \  "
'  ''  (_)   :|   (_) '
'  ""    |___:|____|  '
"  ''    |_________|  "
''"''""''"''"''"'"''""'

편집 : 모든 공백을 처리하는 방법을 찾았습니다. ;)


p=print현재 공백이 너무 많아서 파일에 넣을 방법이 있습니까? (물론 파이썬 3)
isaacg

@isaacg : 그렇게 생각하지 않습니다. 정의 p=print도 길다. 그리고 더 중요한 것은 : p코드를 회전 한 후에 는 재사용 할 수 없습니다 !
Falko

난 당신이 옳은 것 같아요. 그래도 두 가지 나쁘다.
isaacg

12
후보 : 공백 사용상 최우수상.
primo

24

기본, 64

이길 수는 없지만 어쨌든 여기 있습니다. ( Chipmunk Basic 에서 테스트 )

?0:END:?
:::::::1
D:::::::
N::::::E
E::::::N
:::::::D
3:::::::
?:DNE:2?

참고 : BASIC의 다양한 방언에서 사용되는 ?축약 형입니다 PRINT. 코드에 많은 구문 오류가 있지만 END첫 번째 행 의 명령문으로 인해 인터프리터가이를 볼 수 없습니다.


1
실제로, 당신의 점수는 각각 64와 16입니다. 개행은 포함되지 않습니다. 또한 답을 나누지 않는 이유는 무엇입니까?
Justin

오, 그 비트를 놓쳤다. 그들이 공동 장소를 차지하지 않는다면 답을 나누었을 것입니다. 다른 점은 많지 않은 것 같습니다 :-)
squeamish ossifrage

더 이상 지속되지 않습니다 :-)
Justin

나는 당신에게 멋진 라운드 수의 문자를 얻는 데 대한 보너스 포인트를 줄 것입니다. 실제 +1은 END비록 :) 의 창조적 인 사용을위한 것입니다
CompuChip

21

Pyth , 9 자 (3x3)

0 1

3 2

pyth에서는 공백이 앞에 있지 않으면 모든 것이 기본적으로 인쇄됩니다. 첫 번째 줄 다음 줄은 사용자 입력 용이며이 프로그램에서는 평가되지 않습니다.

9자를 얻는 다른 방법 :

"0"
3 1
"2"

피스 1.0.5 , 4 자

pyth에 대한 최근 변경으로 인해 두 자리 숫자를 생성하기가 더 어려워졌지만 (복귀하려는 변경 사항) 이전 버전의 Pyth는 두 자리 숫자를 쉽게 생성 할 수 있습니다. 무시되고 다음 해결책을 제공합니다.

32
41

32,21,14,43을 인쇄합니다.


글쎄, 그것은 재미있다. +1
seequ

cks 스, 그렇게 쉽지 않았 으면 좋겠다. 중간 줄에 3 문자가 누락되었지만 여기서 자동 서식으로 인한 것 같습니다.
Calvin 's Hobbies

@ Calvin'sHobbies 죄송합니다. 그것은 내 후행 공백을 무너 뜨렸다.
isaacg

@Quincunx 오, 나는 그 점수의 일부를 놓쳤다. 수정 해 주셔서 감사합니다.
isaacg

18

베 펀지, 16

0.@1
@@@.
.@@@
3@.2

설명 : 행 디지트 0하는 9스택에 대응하는 숫자를 눌러, .스택으로부터 값을 팝하고 정수로 출력하고,@ 프로그램을 종료한다.

( 여기에서 테스트 )


반 시계 방향으로 회전 한 횟수가 출력되지 않습니까?
seequ

@TheRare 예. 그렇습니다. 그것이해야 할 일입니다.
Justin

1
나는 완전히 장님 인 것 같습니다. 그 때문에 +1이 있습니다.
seequ

이뻐요 !!! 여전히 내가 가장 좋아하는 언어는 영원 토록 영원히!
steffen

16

피에트, 49

Piet 프로그램

나는 노랗고 붉은 색만을 사용하고 대략 대칭 적으로 만들려고 노력했습니다. 회전하면 0, 1, 2 또는 3을 인쇄합니다. Piet에서 프로그램을 종료하는 것은 어렵고 불행히도 그림의 공간의 절반 정도를 차지합니다.


1
작업에 적합한 도구 인 것 같습니다.
Robert Fraser

O_o, 나는이 프로그래밍 언어에 대해 알고 울었다! 방금. 아름다운. 많은 방법으로! 감사합니다!
steffen

15

GNU DC , 6 (3x2)

이것이 "mod 90 °"규칙 완화를 요구하지 않는 가장 짧은 대답이라고 생각합니다.

3z1
0p2

출력 0, 1, 2또는 3각 회전.

를 들어 0, 23회전의는 p단순히 팝업 스택에 푸시 된 리터럴 마지막 번호를 인쇄합니다. 용 1회전 상기 z스택에 푸시 현재 스택 깊이 (1) 다음 p꺼내어 인쇄 그것을.


1
311 / 0p2도 작동합니까?
Neil

@Neil 예, 좋습니다. 그래도 골프 점수에 영향을 미치지 않습니다 :)
디지털 외상

개행은 계산되지 않지만 슬래시는 계산되므로 골프 점수에는 영향을 미치지 만 부정적인 영향을 미칩니다.
M.Herzkamp

@ M.Herzkamp 내 가정은 Neil이 의미 311\n0p2하는 \n것으로, 개행 문자가 어디에 있는지 그렇지 않으면 dc와 관련하여 의미가 없습니다.
디지털 외상

10

GolfScript, 9 (3x3)

0}1
} }
3}2

규칙을 남용하는 것. 은 }일치가 존재하지 않는 경우, 프로그램을 종료하는 일 {, 및 스택의 콘텐츠는 프로그램의 마지막에 인쇄된다.


개행을 문자로 계산하는 것을 잊지 마십시오.
isaacg

2
@isaacgYour score is w*h, the area of your rectangle. Newlines are excluded. In other words, code-golf, newlines not counted.
undergroundmonorail

나는 그것이 }균형을 잡을 수 있다는 것을 몰랐다 . 좋은 트릭.
피터 테일러

9

자바 스크립트, 4

03
12

javaScript 콘솔에서이 프로그램 (또는이 프로그램의 회전)을 실행하면 콘솔에서 마지막 줄만 평가되고 에코됩니다.

그래서:

12 modulo 4 == 0
01 modulo 4 == 1
30 modulo 4 == 2
23 modulo 4 == 3

다음은 작동하는 유사한 2x2 프로그램입니다.

03
12

03
16

03
52

03
56

03
92

03
96

07
12

07
16

07
52

07
56

07
92

07
96

43
12

43
16

43
52

43
56

43
92

43
96

47
12

47
16

47
52

47
56

47
92

47
96

83
12

83
16

83
52

83
56

83
92

83
96

87
12

87
16

87
52

87
56

87
92

87
96

다른 말로하면

ab
cd

여기서 a는 [0,4,8]에 있고 b는 [3,7]에 있고, c는 [1,5,9]에 있으며, d는 [2,6]에 있습니다


8

CJam / GolfScript-3 * 3

2;3
;7;
1;0

세미콜론은 이전 숫자를 표시하므로 오른쪽 하단 만 인쇄됩니다.


6

아 헤이 , 8

바몽희뷸
뷷희몽반

Aheui에는 스택에 1을 넣는 문자가 없으므로 0, 5, 2 및 3을 인쇄하기로 결정했습니다.

설명 : 바와 반은 각각 0과 2를 스택에 누르고 커서를 한 문자 씩 오른쪽으로 이동합니다. 뷸 및 뷷는 각각 스택에 5와 3을 누르고 커서를 두 문자 아래로 내립니다. 몽은 스택에 숫자를 표시하고 인쇄하고 커서를 한 문자 씩 위로 이동합니다. 희 프로그램을 종료합니다.


5

자바 스크립트

(브라우저 콘솔, 쉘 또는 다른 REPL에 입력되어 결과가 인쇄 됨)

1+2
-3-
4+5

표현, 중요하지 않은 줄 바꿈 및 결과 자동 인쇄 기능을 갖춘 다른 언어에서도 작동합니다.


2
나는이 아이디어를 좋아하지만 항상 1 (mod 4)을 인쇄하지는 않습니까?
zennehoy

2
더 간단한 변형이있을 수 있습니다 '2,3\n,0,\n1,0'.
Keen

회전하면 다른 결과를 제공합니다. @Cory, 영리 해요! 쉼표 연산자없이 언어로 작업하는 데 너무 익숙합니다.
lrn

@lrn 예, 결과가 다르지만 요구 사항은 아닙니다. 프로그램은 회전하지 않을 때 0 (mod 4)을 인쇄하고 각각의 횟수만큼 회전 할 때 1, 2 또는 3 (mod 4)을
인쇄해야합니다

원본 포스터의 두 번째 메모는 회전 된 버전의 값이 서로 다른 한 값을 허용합니다.
lnd

5

MATLAB / 옥타브 -144 (100)

골프 : 10 x 10 = 100

....d.....
....i.....
....s.....
... p2 ...
disp  1...
...3  psid
... 4p ...
.....s....
.....i....
.....d....

대체 솔루션 : 15 x 15 = 225

.......d.......
.......i.......
.......s.......
...    p    ...
...         ...
...    4    ...
...    .    ...
disp 1...3 psid
...    .    ...
...    2    ...
...         ...
...    p    ...
.......s.......
.......i.......
.......d.......

vrtical 및 horizontal 연산자 'disp'가 문자 'p'를 공유하면 첫 번째 솔루션을 8x8 크기로 줄일 수 있습니까? ...d.... ...i.... ...s2... disp 1.. ..3 psid ...4s... ....i... ....d...
AMK

@AMK : 불행히도 이로 인해 line 오류가 발생합니다 ..3 psid. 줄 바꿈을 표시하고 나머지 문자를 무시하려면 각 줄의 시작 부분에 3 개 이상의 점이 필요합니다.
Falko

5

펄 5x7 (35)

1+p+t+1
-print+
1+i+i+1
+tnirp+
1+t+p+1

파티에 조금 늦었 어 독방에 -따라 인쇄 할 번호가 결정됩니다.


4

자바 스크립트, 3

2
1
4

기본 7에서 작동합니다.

기본 9 버전 :

2
7
0

설명

예를 들어 디버깅 콘솔에서 대화식으로 실행하면 마지막 명령문 / 식의 값이 출력됩니다.

4 7 = 4 100 (mod 4 )
412 7 = 205 101 (mod 4 )
2 7 = 2 102 (mod 4 )
214 7 = 109 103 (mod 4 )

홀수 기반에 대해 비슷한 솔루션을 찾을 수 있습니다.


이것은 신고되었지만 질문이나 답변을 이해하지 못하므로 건너 뛰어야했습니다. downvoters가 downvotes를 설명하는 주석을 남겼다면 좋을 것입니다.
Rainbolt

@Rusher 나는 그들이 기본 7 비트를 이해하지 못했다고 생각합니다.
primo

3

베 펀지, 12 (6x2)

나는 Befunge의 2 차원 적 특성을 최대한 활용하고 두 방향에서 코드 경로를 수직으로 실행함으로써 기존 Befunge 답변을 약간 개선했습니다.

0.@.1v
v3.@.2

온라인 시작 : 0 , 회전 1 , 회전 2 , 회전 3 .


2

놀라운, 7 * 14 = 98

.. \/ \/ .. ..
.. 31 \\ 32 \/
\/ \\ \/ \\ \/
\/ 30 \\ 33 ..
.. .. \/ \/ ..

회전 할 때 각 셀이 그대로 유지되기를 기대합니까?
Sparr

2

아아!(4 * 4 = 16)

업무에 적합한 도구를 사용하는 것은 어떻습니까? 의견이 없습니다 (일반적인 언어).

전체 프로그램 제품군 (J : ((|.@:|:) ^: (i. 4)) >'hpqh';'q01p';'p32q';'hqph'또는 에서 생성됨 ((|.@:|:) ^: (i. 4)) 4 4 $ 'hpqhq01pp32qhqph')

hpqh
q01p
p32q
hqph

한 번 회전 :

hpqh
q12p
p03q
hqph

두 번 회전 :

hpqh
q23p
p10q
hqph

세 번 회전 :

hpqh
q30p
p21q
hqph

이를 설명하기 위해 "들여진"버전을 보는 것이 가장 좋습니다 (모든 회전에서 작동 함).

hhpq h
  0  h
q   1p
p3   q
h  2  
h qphh

이 버전은 프로그램이 개별 회전마다 하나씩 4 개의 개별 부품으로 구성되어 있음을 보여줍니다.

  • h -제어 흐름을 왼쪽으로 설정

  • p -아래 데이터 / 코드 래스터로 항목 인쇄

  • q -프로그램을 종료


2

플로터 -9 × 5 = 45

여기에 이미지 설명을 입력하십시오

콘솔에 4, 1, 2 또는 3을 인쇄합니다.

'검은 색'은 유효한 명령어 (NOP)이며 구문입니다. 그것 없이는 시작 위치를 찾을 수 없습니다. 따라서 사각형의 모든 위치가 사용됩니다.


1

요소, 2x3 = 6

1*
`2
3 

이것은 3x3 순진한 솔루션보다 개선 된 `것으로, 중간에 양쪽에 숫자가 있습니다. 위에 표시된 0의 경우가 가장 흥미 롭습니다.* 을 얻기 위해 아무것도 3을 곱하는 데 사용 그 외에는 그렇게 복잡하지 않습니다.

공간이 어색한 것을 발견하면 거의 다른 문자로 바꿀 수 있습니다. []{}`_ .

참고로 다른 세 회전은 다음과 같습니다.

case 1
*2 
1`3

case 2
 3
2`
*1

case 3
3`1
 2*

0

칩, (2x5) 10

b~
+a
~t
e*
 f

*모든 이웃 요소를 활성화합니다 :
~서쪽에서 활성화되지 않은 경우 북쪽, 동쪽, 남쪽 및 서쪽 (소스) , 동쪽 이웃을 활성화합니다 (NOT- 게이트) (여기서 활성화되지 않음)
t현재 바이트
a세트를 인쇄 한 후 실행을 종료 0x01합니다. 출력
b세트 의 비트 세트 0x02출력 비트 는 출력
e비트 0x10
f설정합니다 0x20. 출력 비트 는 출력 비트 를 설정합니다.
+ 이웃에 의해 활성화 된 경우 다른 모든 이웃을 활성화하십시오 (와이어)

칩에는 -w플래그없이 (입력없이 실행할 수 있도록) 또는 실행하기 위해 일부 입력이 필요합니다.

인쇄 0, 1, 2, 또는 3ASCII있다. 코드 포인트가 경우 0x000x03요구되는의를 제거 e하고 f다음의 격차를 채우기 위해 공간을 이동합니다.


0

Japt , 3 * 1 = 3 바이트

5zB

온라인을보십시오 : 있는 그대로 , 한 번 회전 , 두 번 , 세 번 .

0, 5, 2, 11을 각각 출력합니다.

변수 B는 값 11을 보유하며 Number.z(other)바닥 분할입니다 (모두 분명히 : p를 찾았습니다). 여러 줄 코드의 경우 마지막 줄이 출력으로 전달됩니다. 여기서는 단순히 상수입니다.


2 * 2 = 4 바이트

2J
1T

온라인을보십시오 : 있는 그대로 , 한 번 회전 , 두 번 , 세 번 .

0, 21, 2, -1을 각각 출력합니다.

T0을 J보유하고 -1을 보유합니다.

트릭은 두 리터럴 또는 변수를 나란히 놓으면 쉼표가 삽입되고 출력은 마지막 것입니다.

2 * 2 JS 솔루션 은 Japt에서도 작동합니다.

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