잃어버린 숫자를 인쇄하십시오


16

잃어버린 TV 시리즈 의 열렬한 팬으로서 , 나는 에피소드에 반복적으로 나타나는 일련의 숫자에 항상 흥미를 느꼈습니다. 이 숫자는 다음과 같습니다.

4,8,15,16,23,42 ( A104101 )

프로그래밍 언어를 사용하여 이러한 숫자를 출력하는 코드를 작성하십시오.

채점 :

  • 최단 답변 승리

  • 출력에는 다른 숫자 나 문자가 포함되지 않아야합니다. 다른 문자를 구분 기호로 사용하거나 구분 기호를 전혀 사용할 수 없습니다.

  • 같은 숫자의 숫자를 분리 할 수 ​​없습니다. 는 올바른 답변이지만 는 그렇지 않습니다.48_15162342481_5162342

  • 순서를 존중해야합니다.

  • 코드에 시퀀스의 숫자가 없으면 점수를 30 % 줄입니다. 이 규칙을 사용하면 숫자를 별도로 입력 할 수 있습니다. 예 :

    abcde1fg5h
    

    답에 숫자 가없고 숫자 만 포함되므로 올바른 후보 입니다. 그러나 또는 은 보너스를 무효화합니다.1548

  • 코드에 숫자가 전혀 없으면 점수를 50 % 줄입니다. ¹ , ² 또는 ³ 같은 다른 문자 는 여전히이 보너스에 유효합니다.



2
모호하게 관련 : 아직 길을 잃었습니까?
Dennis

1
순서대로 인쇄해야합니까?
Titus

6
나중에 참조 restricted-source할 수 있도록 여기에 사용할 수 있는 태그가 있습니다. 대부분의 답변에서 명백한 해결책을 피할 수 있지만 숫자 사용이 모두 금지 된 경우 문제가 약간 더 흥미로울 것입니다.
Arnauld

답변:


31

분실 , 29 27/2 = 13.5 바이트

%?\>>>>>>>>>>
>>\"*"@"

온라인으로 사용해보십시오! 또는 결정적인지 확인하십시오.

사용하기에 적합한 언어 인 것 같습니다.

설명:

손실은 포인터가 시작하는 2D 언어입니다 어느 곳 으로 가고, 어떤 방향. 이것은 일반적으로 포인터가 섹션에 일찍 들어 가지 않았는지 많은 이중 검사로 이어집니다.

...>>>>>>>>>>  These arrows filter all pointers that appear on the top line
.............  Or going vertically


%............  This flips the flag so that the program can end
.............  This stops premature termination

.?\..........  Clear the stack by skipping if a value popped from the stack is positive
.............  When the stack is empty, the \ directs the pointer down

.............  The \ directs the pointer right
..\"*"..  The string literal pushes all the Lost values to the stack

..\..........  The @ terminates the program if the % flag is switched
>>\........@.  Otherwise it clears the stack and repeats

.............  The quote here is to prevent the pointer getting stuck
............"  This happens when the pointer starts between the other quotes

11

젤리 , 7/2 = 3.5 바이트

“ƲÞIȥ’Ḥ

구분 기호없이 숫자를 인쇄합니다 (예 : 정수 4815162342 .

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

작동 원리

“ƲÞIȥ’bijective base-250 정수 리터럴입니다.
Ʋ, Þ, I, 및 ȥ이 지수 (1 기) 154 , 21 , 74171 가 정수 인코딩되므로 젤리의 코드 페이지 250154+250221+25074+171=2407581171 .

마지막으로 (반쪽) 정수를 두 배로하여 22407581171=4815162342 합니다.

출력을 인코딩하면 “¡9)Ƙ[’숫자가 포함 된으로 직접 연결되므로 더블링이 필요 합니다.



6

05AB1E , 점수 : 10 9 7 바이트 / 2 = 3.5

•‘o]Ê•·

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

또는 7 바이트 대안 :

•’µ[%•R

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

정수를 출력합니다 4815162342.

설명:

•‘o]Ê•     # Compressed integer 2407581171
      ·    # Doubled

•’µ[%•     # Compressed integer 2432615184
      R    # Reversed

내이 05AB1E 팁을 참조하십시오 (섹션 얼마나 큰 정수를 압축하는 방법을? ) 이유를 이해하는 •‘o]Ê•것입니다 2407581171하고 •’µ[%•있다 2432615184.


이전 9 바이트 는 목록 출력에 응답합니다 [4,8,15,16,23,42].

•ΓƒÇ²•т;в

@Emigna 덕분에 -1 바이트 (따라서 -0.5 점수) .

다른 05AB1E 답변 보다 길지만[4,8,15,16,23,42] 정수 대신 목록을 출력합니다 4815162342.

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

설명:

•ΓƒÇ²•       # Compressed integer 1301916192
      т;     # Integer 50 (100 halved)
        в    # Convert the first integer to Base-50 (arbitrary): [4,8,15,16,23,42]

내이 05AB1E 팁을 참조하십시오 (섹션에서는 어떻게 큰 정수를 압축?하는방법 압축 정수리스트에? ) 이유를 이해하는 •ΓƒÇ²•것입니다 1301916192, 그리고 •ΓƒÇ²•50в이다 [4,8,15,16,23,42].


1
당신은 가질 수 •ΓƒÇ²•т;в에 대해 4.5 포스트 스크립트 번호는 보너스 괜찮있다.
Emigna

@Emigna 아, 좋아! 감사.
케빈 크루이 ssen

6

자바 스크립트 (ES7), 34/2 = 17 바이트

_=>eval(atob`NjUwNTgxMDErNDEqKjY`)

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

이것은 "65058101+41**6"base-64로 한 번 인코딩 된 숫자를 포함하지 않는 expression을 디코딩하고 평가합니다 .

65058101+416=65058101+4750104241=4815162342


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

지루한 명백한 해결책.

_=>4815162342

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


6

파이썬 3 , 25 바이트, 12.5 포인트

print(*map(ord,'ዏٗ*'))

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

𩦦 (髒, ⿰ 馬 葬), 𧨦 (謚, ⿰ 言 ⿱⿵ 八一 皿)의 비용은 4 바이트이지만 U + 0657의 비용은 2 바이트입니다.


파이썬 3 , 29 바이트, 14.5 포인트

print(ord('𩦦')*ord('湡'))

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

⿰ (⿰ 馬 葬)는 "더러운"을 의미하는 髒의 변형 문자입니다. 湡는 강의 이름입니다. 그리고 그들은 내가 아는 것처럼이 질문과 관련이 없습니다.


구분자 규칙에 대해 질문했으며 4815 162342유효한 개별 구분자를 사용할 수 있습니다 . 따라서 print(*map(ord,'ዏ𧨦'))1.5 점을 저장합니다 :) ( print(*map(ord,'밗'))2 점을 저장하지만 유효하지 않은 것으로 지정되었습니다).
Jonathan Allan


4

자바 8, 점수 : 12 11.9 (17 바이트의 70 %)

v->767*6277917L+3

@RickHitchcock 덕분에 -0.1 점수 .

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

설명:

v->               // Method with empty unused parameter and long return-type
  767             //  767
     *6277917L    //  multiplied by 6277917 (as long)
              +3  //  And then 3 is added

12 점 (24 바이트 중 50 %)의 이전 답변 :

v->(long)''*'Ⓥ'*'䧶'

인쇄 할 수없는 문자를 포함합니다 0x1B.

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

설명:

v->                   // Method with empty unused parameter and long return-type
  (long)              //  Cast the character (and therefore the result) to a long
        ''            //  27
           *'Ⓥ'       //  Multiplied by 9419
                *'䧶'  //  Multiplied by 18934

Java에서 문자는 유니 코드 값을 보유하는 정수로 자동 상자 화 될 수 있습니다. 불행하게도, 문자의 최대 지원 유니 코드는 65,535내가 곱셈에 두 문자를 사용 (예상 나누는 가장 큰 두 숫자는 이후 수 없도록 4,815,162,342되어 56,80284,771(가) 어디에서, 84,771불행하게도 최대 값을 초과 65,535.
또한, 최대 크기 때문에 int는 32 2 -1 ( 2,147,483,647)이고 결과 4,815,162,342는 그보다 큽니다. long최대 64 2 -1 ( 9,223,372,036,854,775,807) 을 보유 할 수 있는 명시 적 캐스트 가 필요합니다.


지루한 답변은 보너스없이 14 바이트 였습니다.

v->4815162341L

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


1
난이게 좋아. : 자바 것에 대해 아주 짧은
Emigna

@Emigna 감사합니다. 캐스팅이 필요하고 long매우 큰 유니 코드 문자를 지원하지 않는 것이 너무 나쁩니다 . 언급 된 두 가지 제한 사항이 없다면 v->'𩦦'*'湡'(15 바이트, 7.5 점수)면 충분했을 것입니다. 그러나 여전히 매우 짧습니다. :) Java는 대부분 코드 골프 (duhh ..)와 관련하여 많은 단점이 있지만 숫자를 사용할 수 없기 때문에 문자로 계산하는 것은 몇 가지 장점 중 하나입니다. 이 비슷한 비슷한 대답에 매우 유용 했습니다 .
Kevin Cruijssen

1
11.9 바이트 : v->767*6277917L+3
Rick Hitchcock

3
@RickHitchcock 매일 0.1 바이트가 절약되는 것은 아닙니다. ;)
Arnauld

@RickHitchcock 감사합니다! 그리고 위의 Arnauld 의 의견에 동의합니다 . : D
Kevin Cruijssen 오전

4

R, 18x0.7 = 12.6 점

cat(9*2*267509019)

공정한 자기 설명은 문제의 숫자를 피하면서 산술을 수행합니다.


4

7 , 10 바이트, 27 자

115160723426754314105574033

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

디스크에서이 프로그램의 압축 표현은 ( xxd형식)입니다.

00000000: 269c 3a71 6f63 308b 7c0d                 &.:qoc0.|.

설명

우리는 Automate Saving the World 에서이 일련의 숫자를 보았습니다.이 숫자는 규칙적인 간격으로 숫자를 인쇄하여 매우 오래된 언어를 사용하여 흥미롭게 만듭니다. 하지만 훨씬 더 새로운 언어에는 고유 한 언어가있어이 문제를 흥미롭게 만듭니다. (예,이 단락과 실제로이 답변을 작성하기 시작한 이유는 사실상 모든 관련 과제를 사이드 바에 함께 표시하는 방법 일뿐입니다. 일반적으로 사람들은 의견을 사용하여 답변하지만 충분한 담당자가 없습니다. .)

가장 먼저 주목할 점은 7은 완전히 숫자로 구성되어 있기 때문에 보너스를 얻는 것은 효과가 없을 것입니다 (프로그램을 일련의 8 진수로 보더라도 원래 숫자의 ASCII 표현에 해당하는 것은 없습니다) 그런 의미에서 보너스를 청구 할 수 있습니다). 다음으로 주목해야 할 것은 7은 특정 데이터 조각을 생성했을 가능성이있는 명령 시퀀스를 재생성하는 명령을 가지고 있다는 것입니다. 잃어버린 숫자 4815162342를 7 프로그램 자체의 섹션으로 해석 할 수 있습니까?

대답은 "정확하지 않다"입니다. 가장 문제가되는 부분은 그 두 번째 숫자 8입니다. 7 개의 프로그램이 8 진수로 작성되었습니다. 8과 같은 숫자는 없습니다. 따라서 문자열의 시작 부분은 다르게 인쇄되어야합니다.

따라서 프로그램의 기본은 7 가지 "Hello world"프로그램을 기반으로합니다.

5431410557403
543141055          string literal
         7         separate data from code
          4        rearrange stack: {program's source}, empty element, {literal}
           0       escape {the literal}, appending it to {the empty element}
            3      output {the escaped literal}, pop {the program's source}

이스케이프 된 리터럴은 다음과 같이 해석되는 도메인 별 언어로되어 있습니다.

5                  output format: US-TTY using pairs of digits in the string
 43                select character set: digits and common symbols
   14              "4"
     10            "8"
       55          forget the set output format

그 후에 여분의 3스택 요소가 출력되고 남은 스택이 부족하여 종료됩니다. 이 요소는 프로그램 시작시 지정되며 일치하지 않는 항목 6(닫는 대괄호처럼 작동 함) 을 피하기 위해 데이터로 직접 작성하지 않고 코드를 사용하여 생성합니다. ( 7프로그램 시작시 여기에 관련된 두 개의 암시 적 문자가 있습니다.)

{77}115160723426
 7                 empty stack element
  7 11516          append "1151"
         0         append "6"
          723246   append "2324"

다음과 같은 리터럴을 생성합니다.

115162324
1                  set output format: literally as octal
 15162324          "15162324"

인쇄됩니다.


꽤 좋은 답변을 게시했지만 평판이없는 것이 이상합니다. 커뮤니티 답변 만 게시하는 데 대한 귀하의 추론을 읽었으며 그 점에서 귀하를 전적으로 지원하지만, 댓글을 달 수없는 성가신 경우가 있습니다.:(
Jo King

@JoKing : 글쎄, 그것은 실제로이 질문에 대한 답변을 게시하도록 영감을 주었고, 예상보다 훨씬 더 흥미로운 것으로 판명되었습니다. 따라서 이것이 평판을 구하지 않으면 기여도가 다른 사이트보다 사이트에 더 유익하다는 가설에 대한 더 많은 증거라고 생각합니다. (실제로, 내가 11 평판에 영구적으로 붙어있는 것에 대한 주요 좌절은 메타에 대한 편집을 제안 할 수 없다는 것입니다. 즉, 잘못된 정보가 표시되면 수정할 방법이 없습니다.)
ais523


3

MASM 8088 어셈블리 소스, (93 바이트-50 %) = 46.5 바이트

소스에서 숫자 나 시퀀스를 사용하지 않는 경우 :

MOV AH,'P'-'G'
LEA DX,L
INT '!'
RET
T EQU '-'-'+'
L DW 'ph'/T,'jb'/T,'lb'/T,'fd'/T,'dh'/T,'$'

산출:

A>LOST.COM
4815162342


2

Aheui (동위 원소) , 45 바이트 (15 자) * 0.5 = 22.5 점

반밤밪박밭빠따받발따밣뱣히망어

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


설명:

이것도보십시오; Aheui Reference ( 영어 )

Aheui program starts with default stack '아'(or none)

반: push 2, move cursor right by 1(→).
밤: push 4, →
밪: push 3, →
박: push 2, →
밭: push 4, →
빠: dup, →
따: pop 2, push mul result(16).
받: push 3, →
발: push 5, →
따: pop 2, push mul result(15).
밣: push 8, →
뱣: push 4, move cursor right by 2(→→).
히: end.
망: pop 1, print, → (if stack is empty, move cursor left by 1.)
어: move cursor left by 1(←).

ㅁ (인쇄 명령)은 스택 (또는 큐)이 비어 있으면 커서를 역방향으로 이동시킵니다.




2

naz , 46 바이트, 32.2 점

2a2a1o2m1o7s1o5m1o2s2s1o6m1o2s2s1o1a1o1a1o2s1o

4815162342한 번 에 하나씩 각 숫자를 간단히 출력합니다 .


1

JavaScript, 143 바이트 (점수 방법을 잘 모름)

(g=`${2*2}`)=>g.repeat(6).replace(/(.)/g,(m,p,i,k='')=>
  (k=m*[g-3,g-2,g,g,+g+2,g*3-1][i]
  ,RegExp(`${g-2}|${g}`).test(i)?k-1:i==+g+1?k-(g/2):k))

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

6으로 시작하여 4곱하기, 더하기, 빼기,에서, 4출력을 도출합니다.


2
좋아, 보너스를 얻으려고했지만이 크기의 코드로는 보상하지 않았습니다. 왜 단순히 '4815162342'가 아닌가?
Eduardo Hoefel

@EduardoHoefel "점수"또는 "보너스"시스템을 모으지 말고, 보너스를 얻으려고하지 않았으며, 출력에 필요한 숫자를 사용하지 않았습니다. 코드는 숫자를 하드 코딩하지 않고 숫자를 출력합니다. 수 4덧셈, 뺄셈, 곱셈 수의 인덱스와, 4캐릭터 (또는 어레이) 내에서 필요한 수를 유도하는데 이용 될 수있다.
guest271314

당신의 점수는143*0.7=100.1
Jo King

1

PHP, 35 / 2 = 17.5

<?=zzzzzzzzzzzzzzz^NVBVKOVKLVHIVNH;

디지털 방식 : 40 * .7 = 28

<?=2+2,_,5+3,_,17-2,_,17-1,_,17+6,_,7*6;

숫자 없음, 문자열 없음 : 68/2 = 34

<?=$p++,!$p++,$p+=$p,_,$p+=$p,_,~-$q=$p+$p,_,$q,_,--$p+$q,_,$p*~-$p;

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


1
또는 단지 14 바이트 <?=4815162342;
조 왕

1
OP는 분리 문자를 생략 할 수 있는지 여부에 대한 답변을하지 않았습니다. 하지만 그래 왜 10 바이트가 아닌가 : 4815162342. 또는 <?=~+ 10 개의 인쇄 불가능-> 15 / 2 = 7.5
Titus

1

JavaScript (SpiderMonkey), 67 바이트 / 2 = 33.5 60 바이트 / 2 = 30 58 바이트 / 2 = 29 48 바이트 / 2 = 24

-7 bytes / 3.5 , -2 bytes / 1 / 1 @JoKing 제공, -10 bytes / 5 / 5 제공 @@ shsh

print(a=-~-~-~-~[],a+=a,b=a+~-a,a+a,a+b,--b+b+b)

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


1
print(a=-~-~-~-~[],a+=a,b=a+~-a,a+a,a+b,--b+b+b)
tsh

2
또는 print(4815162342)17 바이트 만
조 왕



1

공백 , 점수 : 49 41 바이트 / 2 = 20.5

[S S S T    S S S T T   T   T   T   S S S S S S S T T   S S S T S T T   T   T   T   S S T   T   S N
_Push_4815162342][T N
S T _Print_number]

문자 S(공백), T(탭) 및 N(줄 바꾸기)가 강조 표시로만 추가되었습니다.
[..._some_action]설명으로 만 추가되었습니다.

온라인으로 시도하십시오 (원시 공백, 탭 및 줄 바꾸기 만).

의사 코드 :

Integer i = 4815162342
Print i as number to STDOUT

설명:

공백에서 숫자는 다음과 같이 푸시됩니다.

  • S: 스택 조작 사용
  • S: 푸시 번호
  • S/ T: 각각 양수 / 음수
  • 일부 T/ S뒤에 단일 N: 이진수로 10 진수, 여기서 T1과S 은 0입니다.

그 후 그것은 단순히 인쇄됩니다 TNST 같이 .

  • TN: I / O 활성화
  • S: 스택의 상단을 출력
  • T: 숫자로

여분의 곱셈 및 푸시 정수 명령어를 사용하는 것보다 숫자 자체를 더 길게 밀어 넣습니까?
조 왕

@JoKing 필자 는 왼쪽에 명령을 강조 표시하고 표시하기 때문에 일반적으로 vii5ard 온라인 공백 컴파일러를 사용합니다 . 그러나 최대 값이 32 비트라는 점에서 Java 정수와 비슷하게 작동하며 그 위의 음수로 둘러싸입니다. 따라서 숫자가 너무 커서 한 번에 밀어 넣을 수 없습니다. TIO 에서 숫자를 푸시하면 정상적으로 작동하지만 이제는 깨달았습니다.
Kevin Cruijssen

1

F #, 45 바이트 = 22.5 포인트

for숫자를 인쇄하는 방아쇠 루프입니다.

for c in"DHOPWj"do printf"%d"(int c-int '@')

위는 실행 파일로 컴파일 할 수있는 완전한 프로그램입니다.

REPL (read-eval-print loop), 예를 들어 FSI (F # Interactive)에서는 REPL이 평가 된 표현식의 표현을 출력하므로 다음과 같은 더 짧은 버전이 작동합니다. 35 바이트 = 17.5 포인트입니다.

[for c in"DHOPWj"->int c-int '@'];;

1

파이크 , 3 점

77 91 f8 86 98 06

여기 사용해보십시오!

높은 비트가없는 바이트가 설정 될 때까지베이스 128에서 읽을 첫 번째 바이트 신호.

마지막으로 결과에서 32가 빼집니다 (역사적 이유로).

이것은 매우 적은 양의 공간에서 많은 수의 생성을 허용합니다


1

MathGolf , 7 바이트 * 0.5 = 3.5

ÿ≤┼ÇÅ$∞

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

설명

이 코드는 아직 TIO에서 작동하지 않습니다. 최근에 $연산자 추가를 포함하여 MathGolf를 약간 변경했습니다 . TIO에 연결되면 여기에서 실행할 수 있습니다. 그러면이 답변을 업데이트하겠습니다. 터미널에서 완벽하게 실행됩니다.

ÿ≤┼ÇÅ     Push "≤┼ÇÅ"
     $    pop(a), push ord(a) (pushes 2407581171)
      ∞   pop a, push 2*a

MathGolf에는 최대 길이 4의 문자열을 만들기 위해 1 바이트 리터럴이 있다는 사실을 이용합니다. 기본 -256 문자열에서 전체 숫자를 변환하려면 2를 사용해야 "했고 문자열은 5였습니다. 문자. 이렇게하면 2 바이트를 절약 할 수 있지만 결국 두 배의 연산자를 사용하여 1 바이트를 잃습니다.





1

Befunge-98 (FBBI) , 15 바이트 / 2 = 7.5 포인트

"*H/!k-"*.*+..@

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

설명:

먼저 문자 '* + H /! k- (42, 72, 47, 33, 107, 45)의 ASCII 값을이 순서대로 스택에 푸시하십시오. 그런 다음 계산4815=451071623=3347+72및 출력.

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