지미는 당신의 도움이 필요합니다!


17

최근의로,이 볼 수있는 등의 Jimmys 자신의 죽음에 떨어지는 많은왔다 보인다 여기 , 여기 지미가 하락한다면 당신은 결정했다 곳. 이제 우리는이 광기를 멈추고 지미를 구하려고합니다.

지미 세 신체 부위를 갖고 /, o그리고 \이와 같이 배치

/o\

플랫폼은로 표시됩니다 -. 지미는 플랫폼 바로 위에 있지 않은 두 개 이상의 신체 부위가있는 경우 플랫폼에서 떨어집니다.

몇 가지 예 :

   /o\
- -------

지미는 모든 신체 부위가 위에 있기 때문에 균형을 잡을 것 -입니다.

   /o\
    ------   ---

지미는 두 신체 부위가 -s 이상이기 때문에 균형을 잡을 것 입니다.

 /o\
-- ----  --

지미는 두 플랫폼으로 나뉘어도 균형을 잡을 것입니다

  /o\
   -

두 신체 부위가 플랫폼 위에 있지 않기 때문에 Jimmy는 균형을 맞출 수 없습니다.


플랫폼 공급이 부족하기 때문에 길이가 5 인 플랫폼 만 있으므로 가능한 적은 사용하는 것이 중요합니다.

당신의 임무는 지미를 입력하고 모든 지미를 입력에 저장하는 일련의 플랫폼을 출력하는 것입니다. 출력은 가능한 한 적은 수의 플랫폼을 사용해야하지만 각 플랫폼은 5 여야합니다- 의 너비는 .

플랫폼의 -너비 가 5 인 규칙은 각 플랫폼 사이에 공간이 있어야 함을 의미합니다. ----------길이가 10 인 플랫폼으로 간주되고 길이가 5 인 두 플랫폼이 아닌 출력에서 ​​유효하지 않습니다.

테스트 사례

/o\  /o\/o\    // input
----- -----    // output
/o\           /o\
-----       -----
/o\           /o\      // same input as above
-----          -----   // this is also valid output
    /o\ /o\
     -----

표준 규칙이 적용됩니다.

이것은 코드 골프입니다. 최단 답변이 이길 수 있습니다!


2
@Veskah 모든 지미가 가능한 가장 적은 플랫폼을 사용하여 저장되는 한 위치는 중요하지 않으므로 각 입력에 대해 여러 개의 유효한 출력이 있습니다. 입력에 얼마나 많은 Jimmys가 있을지에 대한 조건은 없으며 빈 문자열은 유효한 입력입니다.
Quinn

3
테스트 사례 4는 무서운 얼굴처럼 보입니다
만료 된 데이터

2
후속 조치 : 플랫폼에 최대한 많은 지미를 배치하여 떨어지지 않도록하십시오.
val은

2
실제로 연결된 질문 중 하나 인 @val-나는 그 질문을 따랐습니다. : P
Quinn

7
앞으로 많은 지미 후속 조치를 볼 수 있습니다.
connectyourcharger

답변:


2

, 17 15 바이트

W‹ⅈLθ«×⁵№o\§θⅈ→

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

W‹ⅈLθ«

커서 위치가 입력 길이보다 작을 때 반복하십시오.

×⁵№o\§θⅈ

입력에서 해당 위치의 문자가 a o또는 a \이면 5 -s 를 인쇄하십시오 .

다음 문자로 이동하여 플랫폼 간 최소 하나의 공간을 보장하십시오.

이전 17 바이트 솔루션은 IMHO more "Charcoal-y"입니다.

θ⸿Fθ«×⁵¬№ /⊟KD²↑→

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 출력은 입력을 포함하므로 솔루션의 정확성을 보여줍니다. 설명:

θ⸿

입력을 인쇄하고 다음 줄의 시작으로 이동하십시오.

Fθ«

지미가 놓치지 않도록 입력의 모든 문자를 반복합니다.

×⁵¬№ /⊟KD²↑

커서 위의 문자를보십시오. 공간이 없거나 공간 /이 없으면 아무것도하지 않으면 5 -초를 인쇄 합니다.

다음 문자로 이동하여 플랫폼 간 최소 하나의 공간을 보장하십시오.


7

파이썬 2 , 70 67 바이트

lambda s:S('/',' ',S("\S.{5}","----- ",s+' '*5))
import re;S=re.sub

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

Kevin Cruijssen & Neil 덕분에 -3 바이트

가장 예쁘지 않고 남은 슬래시를 더 잘 처리하는 방법을 모릅니다 ...

불행히도, 우리는 단일 플랫폼을 사용하여 각 플랫폼의 양쪽 끝을 공백으로 바꿀 수 없습니다 re.sub 플랫폼이 한 공간 떨어져 있으면 두 플랫폼 사이의 간격을 두 번 이상 일치시킬 수 없기 때문입니다. 이러한 어설 션 내에서 일치하는 항목은 바뀌지 않기 때문에 미리보기 / lookbehind 어설 션이 도움이되지 않습니다.

단일 사용 re.sub 참조 사용 :

Python 3.8 (시험판) , 78 바이트

lambda s:[s:=re.sub(".[^/ -].{5}"," ----- ",s+"  ",1)for c in s][-1]
import re

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


69 바이트 먼저 대체하여 /다음과 [^ ].
Kevin Cruijssen

@ Retina의 @Neil의 제안 된 골프 답변은 67 바이트 입니다.
Kevin Cruijssen


2

파이썬 (3) , 158 (164) 160 바이트

a=input();r=""
for i,c in enumerate(a):
 try:r[i]
 except:
  if c in"/o":
   r+=(a[i+5<len(a)and i+5or len(a)-1]=="o"and" "or"")+"----- "
  else:r+=" "
print(r)

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

이것은 나의 첫 번째 코드 골프 답변이며, 지미 문제에 대해 기쁘게 생각합니다!

설명:

  • a=input();r="": 입력을 받고 새 문자열을 초기화하십시오 r.

  • for i,c in enumerate(a):: 입력을 열거합니다.

  • try:r[i] ... except:: r[i]존재하는 경우 참조 -존재하지 않는 경우 except블록을 처리하십시오 .

  • if c in"/o":: 현재 캐릭터가 Jimmy의 첫 두 신체 부위에 있는지 확인하십시오.

  • r+=(a[i+5<len(a)and i+5or len(a)-1]=="o"and" "or"")+"----- ": 그렇다면 새 세그먼트를 추가하십시오. 다른 지미 헤드가 5 자 안에있는 경우 새 세그먼트 앞에 공백을 추가하십시오.

  • else:r+=" ": 그렇지 않으면 공백을 추가하십시오.

  • print(r): 최종 결과를 인쇄하십시오.


아주 가깝지만 실제로 모든 테스트 사례에서 작동하지는 않는다고 생각합니다. 가능한 한 적은 수의 플랫폼을 사용해야하며 마지막 예제에서는 1로 수행 할 수있을 때 2를 사용합니다.
Quinn

@ 퀸 촬영. 오류가 해결 될 때까지 경쟁하지 않습니다.
connectyourcharger

@connectyourcharger "비경쟁"은 잘못된 솔루션의 유효성을 검사하지 않습니다. 일정 시간 (예 : 다음 몇 분) 동안 수정하지 않을 경우 삭제하는 것이 좋습니다.
Outgolfer Erik

@Quinn 나는 지금 고쳤다.
connectyourcharger

@connectyourcharger 니스!
Quinn

2

망막 , 23 21 바이트

/

$
5* 
\S.{5}
5*- 

@Neil 덕분에 -2 바이트 .

두 번째, 네 번째 및 여섯 번째 줄에 단일 후행 공간을 포함합니다.

@negativeSeven 의 Python 2 답변 포트 , 따라서 그를 찬성 해야합니다!

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

설명:

모두를 다음 "/"과 같이 교체하십시오 " ".

/
 

후행 공백 5 개 추가 :

$
5* 

공백으로 시작하지 않는 크기 6의 모든 하위 문자열을 다음과 같이 바꾸십시오 "----- ".

\S.{5}
5*- 

\S대신 사용할 수 있습니까 [^ ]?
Neil

물론 @Neil Ah. 감사!
Kevin Cruijssen


1

05AB1E , 25 24 바이트

ð5׫'/ð:DŒ6ùʒнðÊ}'-5×ð«:

@negativeSeven 의 Python 2 답변 포트 , 따라서 그를 찬성 해야합니다!

온라인으로 시도 하거나 모든 테스트 사례를 확인하십시오 .

설명:

ð5׫                      # Append 5 trailing spaces to the (implicit) input-string
    '/ð:                 '# Replace all "/" with a space
        D                 # Duplicate the string
         Œ                # Get all substrings of this
          6ù              # Only leave those of length 6
            ʒ   }         # Filter it further by:
             нðÊ          #  Only keep those which do NOT start with a space
                 '-5×ð«  '# Push a string of 5 "-" appended with a space: "----- "
                       :  # Replace in the initially duplicated string all substrings 
                          # remaining in the list with this "---- "

1

apt , 23 22 바이트

Arnauld의 JS 솔루션 포트로 완전히 테스트하기에는 너무 지쳤습니다. 유효하지 않은 경우 다이아몬드를 삭제할 수 있습니까?

+L² £=U´?U:X>M©5)?'-:S

시도 해봐

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