세 번째는 매력


49

작업을 수락하려면 양의 정수 (0보다 큰)를 출력하는 프로그램을 작성해야합니다. 소스 코드가 복제 된 경우 출력은 동일하게 유지되어야합니다. 까다로운 부분은 소스 코드를 세 번 입력 (삼중으로 입력 ) 하면 출력에 3이 곱해진다는 것입니다.

규칙

  • 당신은 전체 프로그램을 구축해야합니다 . 즉, 출력을 STDOUT으로 인쇄해야합니다.

  • 초기 소스는 1 바이트 이상이어야합니다.

  • 두 정수는 모두 밑이 10이어야합니다 (다른 염기 나 과학적 표기법으로 출력하는 것은 금지됨).

  • 프로그램은 입력을 받지 않아야합니다 (또는 사용되지 않은 비어있는 입력이 없어야 함 ).

  • 후행 / 선행 공백이있는 정수를 출력 할 수 있습니다.

  • 숫자가 일치하는 경우에만 선행 0을 사용할 수 있습니다. 예 : 001-001-003 또는 004-004-012

  • 당신은 당신의 소스의 복사본 사이에 개행을 가정 할 수 없습니다.

  • 이것은 이므로 각 언어에서 가장 짧은 (원본) 코드 승리합니다!

  • 기본 허점이 적용됩니다.

소스 코드가 Abc있고 해당 출력이 4입니다. AbcAbc대신 쓰고 작성 하면 출력은 여전히이어야합니다 4. 그러나 작성 AbcAbcAbc하고 실행하면 출력은이어야합니다 12.


부끄러운 도난 Xcoder 씨의 도전 에서 파생


우리 코드는 자체 소스 코드를 읽을 수 있습니까?
AdmBorkBork

이 같이 태그되지 않기 때문에 @AdmBorkBork 나는 그렇게 생각 것 quine .
Outgolfer Erik

@AdmBorkBork 예.
workoverflow

9
1 바이트 제한이 필요하다고 생각하지 않습니다 .3 번 반복되는 것과 아무것도 아닌 것의 차이를 말할 수 없기 때문입니다.
12Me21

1
@ r12 "Abc"는 모든 프로그래밍 언어 프로그램의 예입니다. 예를 들어 코드가 ( int i=1;print i;) 인 경우 ( )의 복제 된 코드 int i=1;print i;int i=1;print i;는 원래 코드와 동일한 숫자를 출력해야하며 코드가 ( int i=1;print i;int i=1;print i;int i=1;print i;)에 3 번 표시되면 3을 곱한 값
workoverflow

답변:


21

Wumpus , 6 바이트

{~)
@O

온라인으로 사용해보십시오!
두 배로 해보십시오!
세 번 시도해보십시오!

인쇄 13.

설명

무차별 대입 검색으로 6 바이트 솔루션을 많이 찾았지만 5 바이트는 없습니다. 그렇다고 반드시 5 바이트가 아님을 의미하는 것은 아니지만 아마도 이상한 문자 나 무언가를 사용했을 것입니다.

나는이 솔루션을 고르고 결국 0을 인쇄하지 않으며 (대부분은 그렇지 않습니다) 흥미로운 제어 흐름이 있습니다. 단일 프로그램으로 시작해 봅시다 :

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

실행 된 코드는 다음과 같습니다.

{~)O@

{   Turn the IP left by 60°.
~   Swap two implicit zeros on the stack, does nothing.
)   Increment the top zero to 1.
O   Print it.
@   Terminate the program.

충분히 쉽다. 이제 두 배로 된 프로그램입니다. 첫 번째 줄이 두 번째 줄에 추가되므로 그리드는 너비 5 (및 높이 3)까지 확장되어 제어 흐름이 크게 변경됩니다.

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

IP는 루프를 정확히 한 번만 돌므로 실행 된 코드는 다음과 같습니다.

{~){~)){~O@

{~) As before, we end up with a 1 on top of the stack.
{   Turn left by 60° again.
~   Swap the 1 with the 0 underneath.
))  Increment the zero to 2.
{   Turn left by 60° again.
~   Swap the 2 with the 1 underneath.
O   Print the 1.
@   Terminate the program.

마지막으로 3 배 프로그램은 2 배 프로그램과 매우 유사하지만 세 번째 행에 몇 가지 더 중요한 명령이 있습니다.

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

실행 된 코드는 다음과 같습니다.

{~){~)){~~)O@

{~){~)){~
    As before. We end up with a 1 on top of the stack and a 2 underneath.
~   Swap the 1 with the 2 underneath.
)   Increment the 2 to a 3.
O   Print the 3.
@   Terminate the program.

1
나는이 언어를 사랑한다고 생각합니다.
정복자

11

껍질 , 5 바이트

KΣK+1

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

두 번 반복했습니다!

세 번 반복!

설명

Husk에서 반복 가능한 프로그램을 구성하는 것은 매우 어렵습니다. 타입 시스템은 자신에게 적용될 수있는 함수를 금지하기 때문에 어떻게 든 첫 번째 부분이 함수로 평가되고 나머지는 값으로 평가되도록해야하며 기존 내장 유형은 이것을 막기 위해 설계되었습니다. 모호함의 종류. 프로그램의 토큰은

  • K상수 함수를 구성합니다. K a b와 같습니다 a.
  • Σ정수 n 을 취하여 n 번째 삼각수를 반환합니다 .
  • +두 개의 숫자를 더합니다.
  • 1이것은 리터럴 1입니다.

원래 프로그램은 다음과 같이 해석됩니다.

   K Σ (K+) 1
== Σ 1
== 1

이것은 (K+)첫 번째 사람이 먹는 무의미한 기능입니다 K.

두 번 반복되는 프로그램은 다음과 같이 해석됩니다.

   K Σ (K+1KΣK+) 1
== Σ 1
== 1

괄호 안의 기능은 첫 번째 기능에 의해 다시 사용됩니다 K.

세 번 반복 된 프로그램은 다음과 같이 해석됩니다.

   K (Σ (K (+1) (KΣK+) 1)) (KΣK+1)
== Σ (K (+1) (KΣK+) 1)
== Σ ((+1) 1)
== Σ (+1 1)
== Σ 2
== 3

실행하는 데 시간이 오래 걸립니다 ...
Zhou

@WeijunZhou K프로그램에서 여러 번 발생 하는 경우 유형 추론이 매우 느려집니다. 각 토큰은 잠재적으로 여러 개의 토큰을 "먹을"수 있고 통역사는 모든 조합을 시도 할 것입니다 ...
Zgarb

설명해 주셔서 감사합니다
Weijun Zhou

2
kek +1을위한 @Zgarb +1
workoverflow 8

10

젤리 , 7 5 바이트

»‘µ*Ḃ

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

두 배로 해보십시오!

세 번 시도해보십시오!

작동 원리

»‘µ*Ḃ            Main link. No arguments. Implicit argument: x = 0

 ‘               Increment; yield x + 1 = 1.
»                Take the maximum of x and 1. Yields 1.
  µ              Begin a new, monadic chain. Argument: y = 1
    Ḃ            Bit; yield 1 if y is odd, 0 if it is even. Yields 1.
   *             Power; yield y**1 = 1.
»‘µ*Ḃ»‘µ*Ḃ       Main link.

»‘µ*Ḃ            As before.
      ‘          Increment; yield y + 1 = 2.
     »           Take the maximum of 1 and 2. Yields 2.
       µ         Begin a new, monadic chain. Argument: z = 2
         Ḃ       Bit; yield 1 if z is odd, 0 if it is even. Yields 0.
        *        Power; yield z**0 = 1.
»‘µ*Ḃ»‘µ*Ḃ»‘µ*Ḃ  Main link.

»‘µ*Ḃ»‘µ*Ḃ       As before.
           ‘     Increment; yield z + 1 = 3.
          »      Take the maximum of 1 and 3. Yields 3.
            µ    Begin a new, monadic chain. Argument: w = 3
              Ḃ  Bit; yield 1 if w is odd, 0 if it is even. Yields 1.
             *   Power; yield w**1 = 3.


10

Cubix , 5 바이트

)<@OP

한 번 , 두 번 , 온라인으로 시도하십시오 .


설명

Cubix는 스택 외부 언어로, 명령어는 큐브 외부에 둘러싸여 있습니다. 스택이 처음에는 무한한 0으로 채워져 있기 때문에 명시 적으로 푸시하지 않고 오퍼레이터로 "가벼운 공기에서 값을 가져올 수 있습니다"라는 점에 유의해야합니다.

나는 이것이 무차별 대포에 의해 발견되었다는 것을 인정해야한다. 나는 그것을 스스로 발견하지 못했을 것입니다. 실제로 @MartinEnder는 운이 없이이 솔루션을 찾고 있었기 때문에 무차별 강제 시도를 요청한 사람이었습니다. 이것이 무차별 강제 실행자가 발견 한 유일한 솔루션이며, 이것이 Cubix에서 유일하고 가장 짧은 솔루션이라고 생각합니다.

단일 프로그램

달려 봐!

원래 프로그램은 단위 큐브에 맞습니다. 펼쳐진 그물은 다음과 같습니다.

  )
< @ O P
  .

IP (명령 포인터 <)는 동쪽으로 가장 왼쪽에서 시작합니다 . 은 <바로 서쪽을 지적, 그리고 그것은 주위 랩 P. P는 지수이며, 스택에 아무것도 없기 때문에 인터프리터는 두 개의 0을 꺼내고 0 0을 계산 합니다. JavaScript 는 1 입니다. O그런 다음이 값을 인쇄 @하고 프로그램을 종료합니다.

더블 프로그램

달려 봐!

)<@OP)<@OP

10 바이트 프로그램이 너무 길어서 단위 큐브에 맞지 않으므로 크기 2 큐브로 확장됩니다.

    ) <
    @ O
P ) < @ O P . .
. . . . . . . .
    . .
    . .

이전과 마찬가지로 IP는 가장 왼쪽면의 왼쪽 상단에서 시작됩니다. 이번에는 첫 번째 명령어는 P이므로 이전과 같이 1 을 푸시합니다 . 다음은 )최상위 항목을 증가시켜 2 로 바꿉니다 . 그런 다음 <IP를 돌리고 )다시 적중 하여 23 으로 변환합니다 .

여기 흥미로운 곳이 있습니다. P위에서 아래로 두 번째 항목을 첫 번째 항목의 거듭 제곱으로 높이면 0 3 = 0이 됩니다. 그런 다음 IP는 가장 오른쪽 얼굴을 감싸고 두 개의 no-ops .를 통과 한 후 다른을 치십시오 P. 여기에 Cubix의 또 다른 단점이 있습니다. 이진 연산자 (예 :) P는 피연산자를 스택에서 제거하지 않습니다. 따라서 stack이 now [3, 0]이므로 3 0 = 1을 계산 하여 프로그램 을 O출력하고 @종료합니다.

트리플 프로그램

달려 봐!

)<@OP)<@OP)<@OP

더블 프로그램과 마찬가지로 트리플은 크기 2 큐브에 맞을 수 있습니다.

    ) <
    @ O
P ) < @ O P ) <
@ O P . . . . .
    . .
    . .

이 프로그램은 이전과 같은 방식에서 시작 : P밀어 1 , )단위를, <서쪽 IP 포인트, )단위를 다시하고, P지금 밀어 0 . 그런 다음 IP는 <가장 오른쪽면으로 감싸 져 있으며 IP가 이미 서쪽을 향한 이후에는 아무 것도 수행하지 않습니다.

다음은 두 프로그램 중 하나 개의 차이가 )증분 0 스택의 상단에 행 1 . 되면 P다시 마법을 수행하고,이 시간은 그 계산 3 1 = 3 . O출력과 @종료, 그리고 우리는 결정적으로 세 번째 시간이 참 매력임을 증명합니다.


1
나는 당신의 설명을 정말로 즐겼습니다. +1
워크 플로 흐름

7

Brain-Flak , 10 바이트

<>([]{}())

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

두 배로 해보십시오!

세 번 시도해보십시오!

설명:

#Toggle stacks
<>

#Push
(
    #Stack-height (initially 0) + 
    []

    #The TOS (initially 0) + 
    {}

    #1
    ()
)

이 작업을 한 번 실행 (0 + 0 + 1) == 1하면 대체 스택에 배치됩니다. 두 번째로 실행하면 메인 스택에 동일하게 적용됩니다. 그러나 세 번째로 실행하면로 평가되어 (1 + 1 + 1) == 3대체 스택으로 푸시하고 암시 적으로 인쇄합니다.


7

SQL, 25 24 23 바이트

( -1 바이트를 통해 항상 주석 처리 한 잘못 입력 한 문자와 일을 아무것도를 제거 )
( -1 바이트 변경 SELECTPRINTRazvan 보낸 SOCOL 권장 )

PRINT 2/*
*2+1--*/-1
--

작동 방식 :
SQL에서 다음과 같이 주석 태그를 주석 처리 할 수 ​​있습니다.

/*
'Comment'--*/

vs

--/*
'Not Comment'--*/

주석이 제외 된 한 줄의 코드 :
첫 번째 반복 : SELECT 2-1출력 : 1
두 번째 반복 : SELECT 2-1*2+1출력 : 1
세 번째 반복 : SELECT 2-1*2+1*2+1출력 :3


1
PRINT대신 SELECT여분의 바이트를 절약 할 수 있습니다.
Razvan Socol

6

SOGL V0.12 , 7 5 4 바이트

ē»«I

여기 사용해보십시오!

두 배로 해보십시오!

세 번 시도해보십시오!

설명:

ē»«I
ē     push counter, then increment it.
      First time running this will push 0, then 1, then 2.
             TOS on each: 0  1  2
 »    floor divide by 2   0  0  1
  «   multiply by 2       0  0  2
   I  and increment       1  1  3

나는의 라인을 따라 무언가를 시도 ē1|했지만 분명히 비트 OR에 대한 명령이 없습니다 ...
ETHproductions

@ETHproductions 그래, 나도 그런 식으로 시도하고 싶었고 내가 얻은 최선은 ē:2\+: /
dzaima

5

05AB1E , 6 5 바이트

.gDÈ+

온라인으로 사용해보십시오! 또는 두 배로 시도하십시오! 또는 세 번 시도하십시오!

설명

.g     # push length of stack
  D    # duplicate
   È   # check if even
    +  # add

싱글 : 0 + (0 % 2 == 0) -> 1
더블 : 1 + (1 % 2 == 0) -> 1
트리플 :2 + (2 % 2 == 0) -> 3


% 2트리플 설명에 있어야합니까 ?
LarsW

@LarsW : 그렇습니다 실제로 :)
Emigna

@Emigna 나는 "짝수 확인"이 실제로 맞다고 생각 2%_합니까?
Magic Octopus Urn

2 + (2 % 2 == 0) -> 2그러나 2 + !(2 % 2 == 0) -> 3(당신의 설명을 위해).
Magic Octopus Urn

@MagicOctopusUrn 2%_È예 와 동일 합니다. 설명에 대해 무슨 뜻인지 잘 모르겠습니다. 2+(2%2==0) = 2+(0==0) = 2+1 = 3. 내가 계산을 확장했다면 아마 더 분명했을 것입니다.
Emigna

5

> <> , 9 바이트

\5 n;
\\1

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

두 배로 해보십시오!

세 번 시도해보십시오!

"운송 경로가 충분히 뒤 얽히면 결국에는 효과가있을 것"이라는 철학을 사용하여 운 좋게 이런 종류의 것을 발견했습니다. 원래 및 두 배 버전은 5를 인쇄하고 세 배 버전은 1을 5로 인쇄하여 15 = 3 × 5를 만듭니다. 다음은 사용을위한 곱셈 버전입니다.

\5 n;
\\1\5 n;
\\1
\5 n;
\\1\5 n;
\\1\5 n;
\\1

5

파이썬 2 ,  46 45  39 바이트

Halvard의 답변에서 영감을 얻었습니다 . 나의 도전이 새로운 도전에 영감을 준 것이 기쁘다. Kevin Cruijssen 덕분에 6 바이트를 절약했습니다 .

print open(__file__,"a").tell()/79*3|1#

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

두 배로 해보십시오!

세 번 시도해보십시오!

작동 방식 (오래된)

k=open(__file__,"a").tell() # Read the source code in "append" mode and get its length.
                            # Assign it to a variable k.
;print k>>(k==90)#          # Print k, with the bits shifted to the right by 1 if k
                            # is equal to 90, or without being shifted at all overwise.
                            # By shifting the bits of a number to the right by 1 (>>1),
                            # we basically halve it.

두 배가되면 길이는 90 이되지만 새 코드는으로 인해 무시 #되므로로 k==90평가됩니다 True. 부울 그래서, 파이썬 정수의 서브 클래스 k>>True에 해당 k>>1본질적있는 K / 2 = 45 . 이 배가 될 때, 새로운 코드는 다시 무시되고 따라서 새로운 길이는 135 때문에 이동되지 않는, k==90평가 False, 그래서 k>>(k==90) ⟶ k>>(135==90) ⟶ k>>False ⟶ k>>0 ⟶ k, 그리고 k는 그대로 인쇄됩니다.


파이썬 2 , 36 바이트

이것은 38 바이트의 Aidan F. Pierce가 제안한 것이며 2 바이트 씩 골프를 쳤습니다. 나는 혼자서 그것을 내놓지 않았기 때문에 이것을 내 주요 솔루션으로 게시하지 않습니다.

0and""
True+=1
print True>3and 3or 1

온라인으로 사용해보십시오! 두 배로 해보십시오! 세 번 시도해보십시오!


주석을 사용한다는 아이디어에 감사드립니다. 6 바이트를 절약했습니다.
AdmBorkBork

print open(__file__,"a").tell()/79*3|1#혹시?
Kevin Cruijssen

@KevinCruijssen 감사합니다!
Mr. Xcoder

바이트 1 바이트 감소, 소스 코드 읽기 없음 : tio.run/##K6gsycjPM/r/… 2 ~ 3 번 반복 할 수있는 선행 공백으로 인쇄하지만 허용되는 것으로 보입니다.
Aidan F. Pierce

@ AidanF.Pierce 정말 감사합니다! 나는 그것을 조금 더 골라서 대체 솔루션으로 게시했습니다.
Mr. Xcoder

5

R , 37 31 28 바이트

마지막 3 바이트를 골라 낸 Giuseppe 에게 감사드립니다 .

length(readLines())%/%2*2+1

(후행 줄 바꿈).

한 번 사용해보십시오!

두 번 시도하십시오!

세 번 시도하십시오!

이것은 소스 파일 로 리디렉션 되는 8-ball challenge에 대한 주세페의 대답readLines() 에서 나온 트릭을 사용 합니다. 이 코드는 기본적으로 첫 번째 줄 아래에 몇 줄이 있는지 계산하고 1 또는 3 줄이 있거나 (예 : 코드가 단일 또는 두 배) 5 줄이있는 경우 (예 : 코드가 3 배) 출력됩니다.stdin13


오, 깔끔하고 +1! R 에서이 작업을 수행하는 방법을 잘 모르겠습니다. s이 작업을 올바르게 수행하려면 개행이 필요하다고 생각 하지만 일부 계산을 다시 수행 하여 28 바이트 로 골프를 칠 수 있어야합니다 .
Giuseppe

@Giuseppe 줄 바꿈 문제를 지적 해 주셔서 감사합니다! 코드가 3 배일 때 버전을 작동시킬 수 없었 습니다. 뭔가 빠졌습니까?
rturnbull

오, 이상해 난 머스트 라 뒤에 줄 바꿈이 있었지만 그렇게하면 효과가 %/%2있을 것이다
Giuseppe

5

잃어버린 38 바이트

\\<<<<</<<<<>
2>((1+@>?!^%^
.........v

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

\\<<<<</<<<<>
2>((1+@>?!^%^
.........v\\<<<<</<<<<>
2>((1+@>?!^%^
.........v

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

\\<<<<</<<<<>
2>((1+@>?!^%^
.........v\\<<<<</<<<<>
2>((1+@>?!^%^
.........v\\<<<<</<<<<>
2>((1+@>?!^%^
.........v

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

설명

로스트는이 도전에 매우 흥미로운 언어입니다. 일반적인 로스트 기술은 "트랩"을 구축하는 것입니다. 트랩은 모든 IP를 한곳에서 잡아서 스택을 정리하고 특정 방향으로 가도록 제어 할 수 있도록 설계된 프로그램의 한 부분입니다. 이로 인해 Lost의 프로그램 작성이 훨씬 관리하기 쉬워집니다. 그러나 프로그램이 복제 되었기 때문에 트랩 복제도 피해야합니다. 이를 위해서는 제대로 작동하는 새로운 트랩을 설계해야하지만 트랩 중 하나만 복제하면 작동합니다. 내 기본 아이디어는 다음과 같습니다.

v<<<<>
>%?!^^

스택이 비어 있지 않으면 ?아이템을 제거하고 아이템이 0이 아닌 경우 처음으로 되돌아갑니다. 여기서 핵심은 이것이 ^^s 라인을 쌓을 때입니다.

v<<<<>
>%?!^^v<<<<>
>%?!^^v<<<<>
>%?!^^v<<<<>
>%?!^^v<<<<>
>%?!^^

어떻게 입력하든 항상 같은 장소에서 나옵니다.

여기에서 Klein answer 에서 동일한 아이디어를 구현할 수 있습니다 .

\\<<<<<v<<<<>
2>((1+@>?!^%^

우리 프로그램의 중추는 왼쪽에 여러면을 밀어 넣는 측면입니다 2. 프로그램의 사본을 추가 할 때마다 다른 프로그램이 프로그램 2의 백본에 추가되어 추가로 2 개가 스택으로 푸시됩니다. 바닥에서 떨어지면 바운스 \\>되어 코드를 실행합니다.

((1+@

이렇게하면 처음 2 개의 스택 항목이 제거되고 남은 항목에 1 개가 추가되고 종료됩니다. 백본에 3 2가 있으면 1을 더하고 3을 얻습니다. 항목이 3보다 작 으면 전체 스택을 버리고 1을 반환합니다.

이제 남은 유일한 문제는 !프로그램 의 in이 무한 루프를 일으킬 수 있다는 것입니다. IP가 !위로 올라 가기 시작 하면 점프하고 원래 위치로 돌아옵니다. 이것은 루프를 방지하기 위해 아래에 다른 줄을 추가해야 함을 의미합니다.

\\<<<<</<<<<>
2>((1+@>?!^%^
.........^

이것은 ^함정에서 슬래시 사이에 슬래시를 넣는 데 약간의 문제가 있습니다. 그러나 오히려 기적적으로 모든 것이 잘됩니다. 우리의 IP가 제대로 바운스되어 차이가 나지 않습니다.



@ joking 불행히도 나는 한동안 모바일에 붙어 있습니다. 설명과 함께 답변으로 게시 할 수 있습니까?
밀 마법사







4

> <> , 10 9 8 바이트

562gn|

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

두 배로 해보십시오!

세 번 시도해보십시오!

어딘가에 8 바이트 솔루션이 있다고 확신합니다.

끝에 인쇄 할 수없는 ASCII 값은 1이며 g세 번째 반복 에서 et 명령으로 만 가져옵니다 . 처음 두 개는 인쇄 05한 다음 인쇄합니다 15.


8 바이트 솔루션은 애매 모호하지만, 여기에 그들이 당신을 고무시킬 경우를 대비하여 몇 개의 9 바이트가 더 있습니다 : TIO , TIO
나무가 아닙니다

1
@Notatree 인쇄 할 수없는 8 바이트를 얻었습니다
Jo King

4

C (gcc) , 107 바이트

C (gcc)에서의 첫 제출. 너무 길다 ...

i;
#ifdef c
#define c
#ifdef b
i=2;
#else
#define b
#endif
#else
#define c main(){putchar(i+49);}
#endif
c

TIO 링크 : single , double , triple .



3

자바 스크립트, 81 77 74 70 바이트

Shaggy 덕분에 4 바이트 절약

var t,i=(i||[3,1,1]),a=i.pop()
clearTimeout(t)
t=setTimeout(alert,9,a)

꽤 절름발이 JS 솔루션. [3,1,1]배열 의 값을 오른쪽 ( pop()) 에서 소비합니다 . 미래의 현재 값을 표시하기 위해 시간 초과를 등록합니다. 시간 초과가 이미 등록 된 경우 취소하십시오. var변수 선언을 호이스트하는 의 더러운 특성에 의존합니다 .

두 번:

세 번:


작동하려면 후미 세미콜론이나 줄 바꿈이 필요하지만 다음 a의 세 번째 인수로 전달 하여 4 바이트를 절약 할 수 있습니다 setTimeout.setTimeout(alert,9,a)
Shaggy

@Shaggy 감사합니다! 여분의 세미콜론 없이도 잘 작동합니다.
Cristian Lupascu


2

, 12 바이트

⎚≔⁺ι¹ιI⁻ι⁼ι²

온라인으로 사용해보십시오! 자세한 코드는 링크입니다.

두 배로 해보십시오!

세 번 시도해보십시오!

설명

⎚             Clear
 ≔⁺ι¹ι        Assign plus(i, 1) to i
       I      Cast (and implicitly print)
         ⁻ ⁼ι² Subtract equals(i, 2) from
          ι    i

MapAssignRight(Plus, 1, i)@Mr에 대한 내 대답의 포트와 같은 길이로 바이트를 절약합니다. XCoder의 도전 :PI∨›³L⊞Oυω³
Neil

PI⊕⊗÷L⊞Oυω³내 대답의 또 다른 버전이지만 여전히 11 바이트입니다.
Neil

10 바이 터를 찾았습니다!
Neil

: / 정말 고쳐야합니다MapAssign(Incremented, i)
ASCII 전용

2

자바 스크립트, 43 40 바이트

var t=t?--t:~!setTimeout`t=alert(1|~t)`;

2 배 :

3 배 :


추신 :이 솔루션은 환경을 파괴하지 않습니다
l4m2

2

PowerShell , 54 48 45 44 바이트

if(99-gt(gc $PSCOMMANDPATH|wc -c)){1;exit}3#

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

두 배로 해보십시오!

세 번 시도해보십시오!

함께 자신의 호출 경로를 가져옵니다 $PSCOMMANDPATH과 수행 gET- c파일에 ontent을. If해당 파일의 글자 수보다 작 99(를 통해 확인 wc -c, 우리는 출력로 coreutils에서) 1exit(즉, 실행을 중지). 그것은 원래 코드와 이중 코드를 설명합니다. 그렇지 않으면 우리는 출력 3하고 종료합니다. 하나 우리는거야 이후 두 배 또는 세 배 부분에서의 실제 코드는 의미가 exit우리가 도착하기 전에, 또는 코멘트 뒤에 #.

Mr. Xcoder 덕분에 6 바이트
절약 Pavel 덕분에 3 바이트 4 바이트 절약


@Pavel Aha, 그렇습니다. 캐스팅이 올바르게 작동하려면를 -lt99a 로 바꿔야 99-gt하지만 실제로는 1 바이트가 짧습니다. 감사!
AdmBorkBork

2

C # (178 바이트)

Console.WriteLine(1+2*4%int.Parse(System.Configuration.ConfigurationManager.AppSettings["z"]=(int.Parse(System.Configuration.ConfigurationManager.AppSettings["z"]??"0"))+1+""));

미친 C # 솔루션이지만 C #의 한 줄로 가능하다는 것이 행복합니다. :)

나에게 가장 어려운 부분은 동일한 변수를 초기화하거나 증가시키는 유효한 C #을 가지고 있었기 때문에 전역 정적 NameValueCollection이 필요하고 ConfigurationManager가 메모리에서 업데이트 할 수 있다고 생각한 유일한 구성 요소이기 때문에 ConfigurationManager를 남용했습니다. EnvironmentVariables는 내가 찾은 또 다른 옵션이지만 인덱서가 없으므로 사양에 따라 필요한 출력을 생성하기 위해 복사하여 붙여 넣을 수있는 한 줄로 수행하는 방법을 잘 모르겠습니다.


2

룬 마법 , 35 바이트

^w3'\
    f
    1
/1@
/
 '54\w
/yyy

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

이 작업을 수행하면 파서에서 새로운 지연 수정 문자를 다루는 오류를 찾을 수 있었지만 최종 결과는 영향을받지 않지만 결국에는 필요하지 않습니다.

마지막 줄에는 후행 줄 바꿈 (또는 그 문제의 후행 공백)이 없기 때문에 중복 IP가 다른 위치에 생성 될 수 있습니다. 왼쪽 상단은 그리드 주위에 큰 루프를 형성하는 반면 두 번째 IP \는 6 번째 라인의 를으로 대체하기 위해 반사 작업을 수행 합니다 . 이 IP는 계속 반복되며 아무 것도하지 않습니다.

세 번째 IP는 동시에 동일한 여분하게하지만, 상기에 위치하고 있기 때문에 13 행, 그 반사기의 복사본 위쪽을 보내고가 실행 1f'3w대체 오른쪽 상단에 존재하는 서열, 1314 일을 라인 원래 IP가 출력하는 프로그램 배로 원인을 실행 직전 3대신 1(값도 될 수 26, 39, 412, 또는 515인해의 가용성 a-f수치 상수, 13임의로 선택되었다). 그런 다음 아무 것도하지 않는 더 많은 리플렉션 명령을 수행하는 무한 루프에 남아 있습니다.

세 번 시도하십시오!


29 바이트 , 실제로 이해하면 더 낮아질 수 있다고 생각합니다. : P
Jo King

@JoKing 그 공백이 많이 나올 수 있다는 사실에 놀라지 않았습니다. 이 작업을하고 통역사와의 문제로 인해 일한 것이 있으면 기뻤습니다 (원본은 52 바이트 였고 통역사를 고친 후 좋은 덩어리를 제거 할 수있었습니다).
Draco18s

1

펄 5, 28 25 바이트

@neil 덕분에 -3 바이트!

print"\e[D$a"if(++$a!=2);

커서를 뒤로 이동하고 (라인 시작시 아무것도 수행하지 않음) 값을 $a첫 번째 및 세 번째로 인쇄합니다 (즉, 1을 세 번째로 인쇄 할 때 커서가 이동하고 1을 3의 위치에 인쇄 함).


1
print"\e[D$a"if(++$a!=2);혹시?
Neil

1

Q 기본, 19 바이트

CLS
x=2^x
?x-1OR 1

소스에는 후행 줄 바꿈이 포함되어야합니다.

설명

우리의 출력을 원하는 1, 1, 3. 이 숫자가 2의 거듭 제곱보다 작은 것을 관찰하십시오.

CLS      ' CLear Screen of any output from previous copies of the code

x        ' Numeric variables are preset to 0...
 =2^x    ' so as this statement is repeated, the value of x goes 1, 2, 4

 x-1     ' Therefore x-1 goes 0, 1, 3...
    OR 1 ' and we bitwise OR it with 1 to change the 0 to 1...
?        ' and print.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.