더블 타임은 더블 타임이 아닙니다


36

도전 에 기초합니다 .

리듬 게임 오스! 난이도 수정 자 "Double-time"은 실제로 속도를 50 % 만 증가시킵니다.

당신의 임무는 양의 짝수 정수 (0보다 큰) 를 출력하는 프로그램을 작성하는 것입니다. 소스 코드의 각 바이트 / 문자 (선택한 것)가 복제되면 숫자에 1.5를 곱한 값을 출력해야합니다.

예를 들어 소스 코드가 ABC6이고 AABBCC출력하는 경우 9를 출력해야합니다.

원래 챌린지 규칙을 따릅니다.

규칙

  • 완전한 프로그램을 작성해야합니다.
  • 초기 소스는 1 바이트 이상이어야합니다.
  • 두 정수는 모두 밑이 10이어야합니다 (다른 염기 나 과학적 표기법으로 출력하는 것은 금지됨).
  • 프로그램은 입력을받지 않아야하며 (또는 사용되지 않은 빈 입력을 가져야 함) 오류를 발생시키지 않아야합니다 (컴파일러 경고는 오류로 간주되지 않음).
  • 후행 / 선행 공백이있는 정수를 출력 할 수 있습니다.
  • 당신은 당신의 소스의 복사본 사이에 줄 바꿈을 가정 할 수 없습니다.
  • 이것은 이므로 각 언어에서 가장 적은 바이트 이깁니다!
  • 기본 허점이 적용됩니다.

나는 이것이 원래의 도전보다 훨씬 덜 사소한 것이라고 상상하지만, 우리는 창의적이고 독특한 답변을 보게 될 것입니다!


@Fatalize write a program that outputs a positive even integer그렇습니다. 모든 짝수에 1.5를 곱하여 정수를 만들 수 있습니다
Skidsdev

마치 속임수처럼 보입니다.
Outgolfer Erik

@EriktheOutgolfer 매우 유사하지만, 분명한 것이 빠진 경우가 아니라면 훨씬 어려울 것입니다.
TheLethalCoder

9
문자를 복제하면 사소한 언어를 실행하지 못할 수 있습니다. 단일 문자 명령 스타일 또는 표현 기반 언어가 아닌 솔루션이 있는지 궁금합니다.
Keyu Gan

3
@TheLethalCoder 아마도 가장 큰 장애물이 될 것 full program입니다. 복제 된 프로그램에 여전히 유효한 진입 점 / 기능이 있다고 상상하기 어렵습니다.
Keyu Gan

답변:


22

철탑 , 7 5 4 바이트

TIO에서 임의의 언어를 선택하여 사용했습니다.

46vt

설명:

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

46    # Stack is [4, 6]

v     # Reverse the stack [6, 4]

t     # take top of stack 4

배가 :

4466   # Stack is [4, 4, 6, 6]

vv     # Reverse the stack twice so it's the same [4, 4, 6, 6]

tt     # take top of stack 6 and again which is 6 again

officialaimm 덕분에 2 바이트 절약

Veedrac 덕분에 1 바이트 절약


1
이봐, 4/6vt잘 작동합니다 ...
officialaimm

18
나는 무작위 TIO 언어를 선택하고 도전을 위해 배우는 전략을 진심으로 찬성합니다
Skidsdev

@officialaimm 당신이 옳습니다, 감사합니다.
LiefdeWen

1
4/6 <-4를 아무것도로 나눈 값-> 4; 이어서 44 // 66 <-4를 4-> 1로 나눈 값; 아무것도 아무것도 아닌 것으로 나눈-> 아무것도; 그리고 6과 6입니다. 그래도 잘 했어요.
V. Courtois

1
하지 않을까요 46vt동일한 작업을 수행?
Veedrac


14

LibreOffice Calc, 8 바이트

=A2+3
19

다른 이름으로 저장하고 *.csvLibreOffice Calc에서 엽니 다. A1에서 22를 얻을 것입니다.


두 배로 :

==AA22++33

1199

A1에서 33을 얻을 것입니다


1
영리한 언어 선택!
주세페

11

MATL , 3 바이트

TnQ

온라인으로 사용해보십시오! 또는 두 배 버전 .

설명

MATL에서 스칼라 값 (숫자, char, 논리 값)은 해당 값을 포함하는 1x1 배열과 같습니다.

일반 버전 :

T    % Push true
n    % Number of elements of true: gives 1
Q    % Add 1: gives 2

두 배 버전 :

TT   % Push [true, true]
n    % Number of elements of [true, true]: gives 2
n    % Number of elements of 2: gives 1
Q    % Add 1: gives 2
Q    % Add 1: gives 3

7
답변을위한 TnQ ... : D [때때로 tnq를 감사용 짧은 형식으로 사용합니다]
officialaimm

8
@officialaimm :)[우리는 때때로 n배열에서 첫 번째 원소 를 얻기 위해 이것을 사용한다 ...]
Luis Mendo

10

정력, 5

i1<esc>X<C-a>

배가하지 않고 :

i1<esc>  insert the literal text "1"
X        delete backwards - a no-op, since there's only one character
<C-a>    increment, giving 2

두배로 :

ii11<esc>   insert the literal text "i11"
<esc>       escape in normal mode does nothing
XX          since the cursor is on the last character, delete "i1"
<C-a><C-a>  increment twice, giving 3

10

이 답변이 유효한지 확실하지 않습니다. 누군가가 여기에서 아이디어를 얻을 수 있도록 여기에 게시하십시오.

-p 플래그가있는 Node.js, 7 바이트

으로 알렉스 바르 :

3/3*22

33//33**2222

-p 플래그가있는 Node.js, 11 바이트

오래된 것:

3*2*0/1+22

33**22**00//11++2222

출력 22 및 33.


33은 어떻게해야합니까? TIO가 할 수없는 것 같습니다. 00에 잠 깁니다.
V. Courtois

1
어떻습니까 : 3 / 3 * 22
Alex Varga

@AlexVarga 너무 달콤합니다.
tsh

@ V.Courtois 엄격 모드를 사용하고 있습니다
tsh

1
@EdmundReed는 -p표현식 값을 출력하기 위해 플래그가 필요 합니다
tsh

10

파이썬 2 REPL, 11 바이트

(3/1)*(2/1)

이것은 단순히 3 * 2 = 6으로 평가됩니다. 복제되었습니다.

((33//11))**((22//11))

이는 3 ** 2로 평가되며 3은 2의 거듭 제곱 또는 9입니다.


사이트에 오신 것을 환영합니다. 이 파이썬은 출력을 생성하지 않으므로 올바른 답변이 아닙니다. 그러나 답변을 Python REPL 로 변경하면 출력이 생성되므로 유효한 답변입니다. 이 답변을 삭제하거나 언어를 python 2에서 python 2 repl로 변경해야합니다.
밀 마법사

@WheatWizard 감사합니다. 도와 주셔서 감사합니다! 내가 제대로 했습니까?
Carl Schildkraut

8

APL, 7 바이트

⊃⍕⌊3×⍟2

인쇄 2합니다.

⊃⊃⍕⍕⌊⌊33××⍟⍟22

인쇄 3합니다.

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

우와?

단일:

3×⍟2         → 2.079441542  ⍝  3 * ln 2
⌊2.079441542 → 2            ⍝  floor
⊃⍕           → '2'          ⍝  format and take first character

더블:

⍟⍟22          → 1.128508398  ⍝  ln ln 22
×1.128508398  → 1            ⍝ signum
33×1          → 33           ⍝  33 * 1
⌊⌊33          → 33           ⍝  floor
⊃⊃⍕⍕          → '3'          ⍝  format and take first character

주석을 세로로 정렬 할 수 있습니까? 아니면 다른 설정이나 무언가가 내 끝에서 이와 같이 반복되도록 합니까?
Kevin Cruijssen

@KevinCruijssen 나는 그것이 당신의 브라우저 글꼴이라고 생각하지만, 브라우저는 APL을 고정 간격으로 렌더링하지 않습니다. 그 광산 prntscr.com/fwp0l0
Uriel

아, 여전히 읽을 수 있고 좋은 대답입니다. :)
Kevin Cruijssen

그것은 나를 위해 단일 공간으로 렌더링합니다. 글꼴에 따라 다릅니다 ( prnt.sc/fwrnz1 ). 댓글은 확실히 정렬되지 않았습니다 : P
therealfarfetched

@therealfarfetchd 감사합니다, 나는 마지막 3 행을 업데이트했습니다
Uriel


5

CJam , 4 바이트

],))

정상적으로 시도하십시오!

두 배로 해보십시오!

설명

표준:

]     e# Wrap the stack in an array: []
 ,    e# Get its length: 0
  ))  e# Increment twice: 2

더블:

]         e# Wrap the stack in an array: []
 ]        e# Wrap the stack in an array: [[]]
  ,       e# Get its length: 1
   ,      e# Get the range from 0 to n-1: [0]
    )     e# Pull out its last element: 0
     )))  e# Increment 3 times: 3

과부하는 까다 롭다 ...;)
Erik the Outgolfer

AB],작동합니다.
geokavel




3

R , 11 바이트

8*(!0)+1*!1

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

!부정 **이며 지수입니다 (의 별칭 ^). 숫자는 부울 : 0로 변환되고 FALSE다른 모든 은로 변환 됩니다 TRUE. 부울는 정수로 변환됩니다 : FALSE0, TRUE1, 그래서 !0==1, !1==0, !!00==0!!11==1.

8×1+1×0=8880+111=12


1
나는 *and에 의존하는 솔루션을 생각해 내려고 **했지만 당신은 나를 이겼다!
주세페

@ 주세페 내 솔루션이 최적이라고 확신하지 못합니다 (괄호가 필요하다는 !0것은 성가신 일입니다). 이 뭔가 짧아 질 수 -*,하지만 난 ... 아직 이러한 솔루션을 발견하지 않았습니다
로빈 라이더

2

Cubix , 6 바이트

O.1)W@

인쇄 2합니다.

  O
. 1 ) W
  @

을 누르고 1, )증가 시키며 , 출력으로 W왼쪽으로 이동 하여 프로그램을 종료합니다.O2@

두 배로 증가한 것은 분명히 OO..11))WW@@큐브에서 다음과 같습니다.

    O O
    . .
1 1 ) ) W W @ @
. . . . . . . .
    . .
    . .

1두 번 밀고 두 번 )증가하고 W다시 왼쪽으로 점프하여 오른쪽 O북쪽으로 이동하여 출력 3하고 다음 명령은 @프로그램을 종료합니다.

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

온라인 두 배!


2

클라인 , 8 6 바이트

/3+@4\

싱글 , 더블

설명

싱글의 경우 프로그램은 매우 간단한 경로를 따릅니다. 첫 번째 미러는 미러를 두 번째 미러로 편향시켜 두 번째 미러를 통해 4프로그램 끝까지 편향 시킵니다.

더블은 조금 더 복잡합니다. 여기있어:

//33++@@44\\

처음 두 개의 미러는 동일하게 작동하지만 IP를 처음으로 되 돌리는 두 배로 인해 새 미러가 있으며 첫 번째 미러의 복제본에 잡히고 끝으로 편향됩니다. 실행되는 것은 33++6으로 평가됩니다.


2

TI 기본, 3 바이트

단일:

int(√(8

TI-Basic에서는 마지막 표현식이 암시 적으로 반환 / 인쇄되므로 2

배가 :

int(int(√(√(88

반품 / 인쇄 3

TI-Basic은 토큰 화 된 언어입니다 . int(, √(8메모리의 각 바이트이다.


기술적으로 챌린지 사양 은 각 문자 가 두 배가 될 때 명시 적으로 설명 하지만이를 허용하고 사양을 업데이트
하겠습니다.

2

루비 REPL, 8 바이트

";3#";22

REPL은 마지막으로 평가 된 값만 인쇄합니다 22.

배가 :

"";;33##"";;22

이번이 33마지막으로 평가 된 값입니다. 문자열은 다시 한 번 삭제되고 a #는 주석을 시작합니다.


2

> <>, 19 8 바이트

32b*!{n;

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

설명:

32b   push literals onto the stack: [3,2,11]
*     multiply the top two values: [3,22]
!     skip the next instruction
{     (skipped)
n     pop and print the top value from the stack (22)
;     end execution

배가 :

3322bb**!!{{nn;;

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

설명:

3322bb push literals onto the stack: [3,3,2,2,11,11]
**     multiply top values (twice): [3,3,2,242]
!      skip next instruction
!      (skipped)
{{     rotate the stack to the left (twice): [2,242,3,3]
nn     pop and print the top two values from the stack (33)
;      end execution

구 버전 :
보통 :

11+!vn;
    n
    ;

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

설명:

1    push 1 on the stack: [1]
 1    push 1 on the stack: [1,1]
  +    add top two values of the stack: [2]
   !    skip the next instruction
    v    (skipped)
     n    print the top value of the stack (2)
      ;    end execution

배가 :

1111++!!vvnn;;
        nn
        ;;

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

설명:

1111    push four 1's on the stack: [1,1,1,1]
    +    add top two values of the stack: [1,1,2]
     +    add top two values of the stack: [1,3]
      !    skip the next instruction
       !    (skipped)
        v    change direction of execution (down)
         n    print the top value of the stack (3)
          ;    end execution


5
줄 바꿈도 복제해야한다고 생각합니다.
Outgolfer Erik

@EriktheOutgolfer 더 이상 줄 바꿈이 없습니다.
KSmarts

1

Zsh , 14 바이트

<:|echo 22
3
:

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

이와 같이 소스 코드가 복제 된 것을 인쇄하기 위해 비 골프 언어로 전체 프로그램을 얻는 것은 어려운 일입니다. Zsh는 파일과 heredoc이 암시 적으로에 전달되기 때문에 매우 유용합니다 cat. 두 경우 모두 첫 번째 줄을 살펴 보겠습니다.

<:|echo 22            # Give the file : on stdin to cat. cat pipes to 'echo 22', which ignores stdin
<<::||eecchhoo  2222  # Start heredoc on following lines with EOF string '::', pass to cat.
                      # Since cat exits 0, 'eecchhoo 2222' is not executed

너무 오래으로 3프로그램 아닌 첫 번째 프로그램은 인쇄됩니다 22. 두 번째 프로그램은 33중복으로 인해 줄 바꿈이 추가되어 인쇄 됩니다.


경우 3함수 / 프로그램 / 별칭이며, 다음이 18 바이트 솔루션 작업을 계속 것입니다!

<:|echo 22\\c\
3
:

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

마지막 \은 줄 연속이므로 개행은 삭제되어 효과적으로 echo 문을 echo '22\c3'만듭니다. 그 \c후 에코가 인쇄를 중지시킵니다 22(이는 개행을 억제합니다).


1

펄 6 , 14 바이트

'|d 3#';say 22

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

편리하게 명명 된 디버그 기능 dd을 사용하여 두 배로 된 프로그램을 STDERR로 출력합니다. 논리를 분리하기 위해 두 배로 된 프로그램을 따옴표로 묶고 두 배가되면 서로를 취소하고 주석 문자와 함께 #이제 유효하지 않은 일반 프로그램을 주석 처리합니다.



0

MathGolf , 2 바이트

▬)

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

첫 번째 명령어는 1두 배가되었을 때 짝수를 생성하고 두 번째 명령어는 증가 한다는 점에서 다른 답변과 유사 합니다. 이 경우 역 지수 ( 0**0 = 0**0**0 = 1)를 사용했지만 !£≤°명령 중 하나 일 수도 있고 아마도 내가 놓친 것일 수도 있습니다.


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