이 과제는 반복에 관한 두 가지 도전 과제 시리즈 중 첫 번째 과제입니다. 두 번째는 곧 올 것이다.
반복 (I 방금 만든 뭔가)라는 언어에서의 무한 문자열이 구성 12345678901234567890...
으로, 1234567890
영원히 반복합니다.
숫자를 출력하기 위해 다음 구문을 사용할 수 있습니다.
+-*/
: 반복 숫자 문자열에 연산자를 삽입합니다.- 예 :
+
->1+2
=3
( 와 사이에+
삽입 )+
1
2
+*
->1+2*3
=1+6
=7
(현재 두 개의 연산자가 사용되는 것을 제외하고 위와 동일)/
->1/2
=0
(반복은 정수 나누기를 사용합니다)//
->1/2/3
=0/3
=0
(반복은 여러 뺄셈과 나눗셈으로 "왼쪽 연결"을 사용합니다)
- 각 연산자는 왼쪽에 하나의 숫자가 있도록 삽입됩니다
c
(아래 참조).
- 예 :
c
: 문자열에서 다음 숫자와 연결합니다.- 예 :
c+
->12+3
=15
(c
"계속"1
하고 다음 숫자와 연결2
하여12
)+c
->1+23
=24
ccc
->1234
- 예 :
()
: 숫자 처리를위한 괄호.- 예 :
(c+)*
->(12+3)*4
=15*4
=60
(반복은 연산 순서를 사용합니다)(c+)/c
->(12+3)/45
=15/45
=0
(cc+c)/
->(123+45)/6
=168/6
=28
- 예 :
s
: 숫자를 건너 뜁니다 (무한 문자열에서 숫자를 제거합니다).s+
->2+3
=5
(s
건너 뛰기1
)csc
->124
(제c
concats1
및2
상기s
스킵3
, 최종c
concats12
행4
)+s+
->7
(첫 번째+
추가1
및2
만들기3
,s
건너 뛰기3
및 마지막+
추가3
하기4
위해 만들기7
)cs*(++)
->12*(4+5+6)
=12*15
=180
위의 예에서는 무한 문자열의 유한 자릿수 만 사용됩니다. 사용 된 자릿수는 number of operators, concats and skips + 1
입니다.
반복 코드 문자열이 주어지면 결과가 출력됩니다.
입력 및 출력의 예는 다음과 같습니다.
++ -> 6
- -> -1
(-)* -> -3
cscc -> 1245
(cc+c)/ -> 28
cc+c/ -> 130
cs*(++) -> 180
이것은 코드 골프이므로 바이트 단위의 가장 짧은 코드가 이깁니다!
명세서:
- 결과가 절대로 올라가지 않도록 보장합니다
2^31-1
. - 또한 입력은 기호로만 구성됩니다
+-*/cs()
. - 빈 프로그램이 출력
1
됩니다.
@RobertFraser Whoops, 그건 실수 였어-c는 원래 ~ 였지만, 나는 그것을 완전히 고치지 않은 것으로 보인다.
—
clismique
@TonHospel Ooh, 당신은 거기에 좋은 지적이 있습니다. "s"기호는 기본적으로 무한 문자열에서 연결된 숫자를 모두 제거하므로 두 시나리오에서 모두 그렇습니다.
—
clismique
귀하의 사양 그러나 말한다는
—
Ton Hospel
s+
것입니다 2+3
최초의 예로서. 그리고 여전히 s
나를 괴롭힌다. 어떻게 +s()+
확장 되는지 궁금합니다 . 이 경우 1+(2)+4
다음 (
전에 제공 2
하지만 s
도 전에 오는 (
겉으로는 여전히 스킵 3
하지 2
. 그러나 결과는 1+(3)+4
다음의 결과에 s
따라 달라집니다 (와 비교 +s+
)
sc
이다 23
와 s+
이다 1+3
? 않습니다 s
을 건너 1
지금 나 2
? 모든 예제는 피연산자의 첫 번째 작업을 사용 1
하고 2
그래서 ... sc
해야한다 13
.
~
의? 우리를 매달아 두지 마십시오.