다섯 간단한 프로그램 사이에 글자를 반복하지 마십시오


12

당신은 5 가지 과제를 위해 5 가지의 다른 프로그램을 작성해야합니다.

  1. 인쇄 Hello, World!

  2. STDIN을 사용한 입력이 제공되고 계승을 출력하면 입력이 정수> = 0이라고 가정 할 수 있습니다.

  3. 정수 N이 주어지면 소수의 합 <= N을 계산하십시오.

  4. STDIN을 사용하여 입력 한 경우 입력에 사용 된 문자를 출력하십시오. 예를 들어 : 입력은 Hello world이며 출력해야합니다 helowrd. 출력은 소문자입니다. 입력이 항상 공백으로 영문 자라고 가정 할 수 있으며 공백은 무시됩니다.

  5. 다음과 같이 정확하게 다음 다이아몬드를 출력하십시오.

       *
      ***
     *****
    *******
     *****
      ***
       *
    

이러한 모든 도전은 아마도 매우 쉽지만 어획량이 있습니다. 사용하는 모든 편지 는 다른 프로그램에서 다시 사용할 수 없습니다 . 이것은 금지되지 않지만 +8 바이트 의 페널티를 줍니다. 예를 들어, 이것이 첫 번째 작업을위한 프로그램 인 경우 :

print("Hello, World!");

그런 다음 (대문자 또는 소문자 형태) 다음과 같은 문자를 사용할 수 없습니다 : p, r, i, n, t, h, e, l, o, w, d다른 프로그램이다. 당신이 그들을 사용해야하는 경우, 당신은 8 바이트에 대한 각 문자를 '구매'할 수 있습니다. 따라서 l다른 프로그램 에서이 문자를 다시 사용하려면 8 바이트의 벌금이 부과됩니다. 위약금을 지불 한 후에는이 프로그램에서 원하는만큼 각 서한을 사용할 수 있습니다. 다른 캐릭터는 중요하지 않습니다. 또한 5 개의 프로그램 모두 동일한 언어로되어 있어야합니다.

이것은 이므로 바이트 수가 가장 적습니다!


3
이것은 우리가 이미 겪었던 도전들에 대해 약간 다른 스핀이지만, 내 눈에 다중 속박이 될만큼 충분히 다르지는 않습니다.
Mego

3
@Mego 나는 이것을 제한없이 다중 복제로 끝내기 위해 투표했지만 제한은 완전히 새로운 게임으로 만듭니다.
trichoplax

1
3 개의 프로그램에서 주어진 문자를 사용하는 경우 8 바이트 페널티를 두 번 (16 바이트) 지불합니까?
trichoplax

1
@trichoplax, 예, 16 바이트를 지불합니다
Adnan

1
@trichoplax 거의. Duped 문제에 대한 기존 솔루션은 여전히 ​​경쟁력이 있습니다. 여기서 최고의 솔루션은 페널티에서 높은 점수를 얻은 속이는 질문 솔루션을 연결하는 것입니다.
Mego

답변:


10

CJam, 73 바이트

"Obkkh+'Phukc&"7f^
q~m!
ri){'j3+_3++~},:+
lS-el_&
4{_' *4@-Y*('**+}%_1>W%\+N*

각 줄은 완전한 프로그램입니다. 온라인으로 사용해보십시오 : 1 | 2 | 3 | 4 | 5

편지지도

 bc  f h  k   op    u       18
            m   q            4
        ij       r          17
    e      l      s          7
             n        w y   27

원하는 경우 (및 각 프로그램이 한 줄에 들어가는 경우) 이 CJam 프로그램 을 사용하여 자신의 제출물에 대한 문자표 를 만들 수 있습니다 .


이 osascript가 이것을 위해 만들어진 것이 아니라는 증거 : 전체 제출물 이 내 프로그램 중 2 개 미만입니다. XD +1, 잘 했어.
애디슨 크럼프

4

Pyth, 90 바이트

첫번째 시도...

작업 1:20 바이트

+"Hello, "+C87"orld!

작업 2, 3 바이트

.!Q

작업 3, 9 바이트

sf}TPTSvz

작업 4, 6 + 8 = 14 바이트

@G{rw0

작업 5, 44 바이트

"   *
  ***
 *****
*******
 *****
  ***
   *

3

osascript, 759 바이트

내가 시작할 때 이것이 많이 될 것이라는 것을 알았습니다. OO

작업 1:15 바이트

"안녕하세요, 월드!"

나는이 시점에서 그것이 나빠질 것이라는 것을 알았다.

작업 2:64 + 8 * 4 = 96 바이트

실행 중
o를 1로 설정
반복
o를 a * o로 설정
a를 a-1로 설정
종료
영형
종료

어머.

작업 3 : 170 + 8 * 13 = 274 바이트

실행 중
o를 0으로 설정
t를 false로 설정
2에서 a까지 i로 반복
t를 true로 설정
2에서 i-1까지 c로 반복
i mod c = 0이면 t를 false로 설정하십시오.
종료
t 인 경우 o를 o + i로 설정
종료
종료

데니스 ≠ 아웃 골프.

작업 4 : 225 + 8 * 13 = 329

실행 중
o를 ""로 설정
의 항목에서 i로 반복
i의 문자에서 c로 반복
c가 o가 아닌 경우
ASCII 번호가 c <91 인 경우
o를 o & ((ASCII 수 (c + 32의 ASCII) 문자)로 설정)
그밖에
o를 o & c로 설정
종료
종료
종료
종료
영형
종료

...

작업 5 : 45 바이트

"*
  ***
 *****
*******
 *****
  ***
   * "

그래 나는 처음부터 잃을 것이라는 것을 알았다. 그러나 흥미로운 점은 더 적은 문자 로이 작업을 수행 할 수있는 방법이 있는지 알고 싶습니다. 캐릭터 맵 (Dennis 제공) :

   드로로 15
cdef hi lmnop rstu w 160
노프 루스터 57
abcdef 안녕 lmnop rstu w 214
                            39
                             0

위의 문자 수는 약간 벗어났습니다. 줄 바꿈이 계산되지 않아 줄 바꿈에 문제가 있습니다.

참고 : osascript 명령 행에서 실행할 때 문자를 사용해야하기 a's characters때문에 이와 유사한 것을 사용하지 않는 이유는 다음과 같습니다 '. 내가 사용 했다면 전혀 도움이되지 않았거나 비슷한 '것을 사용해야 \'합니다. 또한 "문자열 캡처기로 만 인식 되므로 거기에서도 망했습니다. 그러나 그것은 재미 있었다.


1

NARS2000 APL, 144 바이트 (85 자)

작업 1, 21 바이트 (17 자)

⎕←"Hello, World!"

작업 2, 10 바이트 (4 자)

⎕←!⎕

태스크 3, 22 바이트 (11 자)

⎕←+/¯2π⍳2π⎕

작업 4, 53 바이트 (29 자)

⎕←∪Q[26∣Q⍸⍞∩Q←⎕AV[97+⍳26]∪⎕A]

작업 5, 38 바이트 (24 자)

⎕←" *"[1+4<∘.+⍨(⍳3),⊖⍳4]

1
그것들은 실제로 완전한 프로그램입니까? NARS2000 (및 플랫폼에서 사용할 수 없음)을 모르지만, 알고있는 모든 방언 은 REPL 외부에서 인쇄 하도록 할당해야 합니다.
Dennis

@Dennis 죄송합니다. REPL 내부를 조사하는 것을 잊었습니다.
Oberon

다이아몬드의 후행 공백을 출력 할 수 없습니다.
lirtosiast

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