이 도전은 수학에서 영감을 얻은 사실입니다. 프로그래밍이 아닙니다 .
계승 또는 사실에 대한 수학적 표기법 은 느낌표입니다 !. 느낌표는 not많은 프로그래밍 언어에서 공통 기호입니다 .
도전:
숫자와 문자를 포함하는 문자열 + !을 입력으로 사용하여 다음을 출력하십시오.
느낌표 앞의 모든 항목은 수학 표현식으로 평가되어야 2+2합니다 4.
하나의 느낌표 후 모든 부속품으로 추가해야하므로, 그것의 앞에 무엇을 : 2+2!5제공해야 45하기 때문에 2+2=4, 및 5부속품입니다. 2+2!5+5제공해야합니다 410.
이후 !도 뜻 not이야 아무것도 하지 사후 액세서리는해야 하지 추가 될 수있다. 그래서, 2+2!!5제공해야 4하기 때문에, 5액세서리가 아닙니다. 자, not(not(true))==true그래서 2+2!!!5주어야한다 45. 2+2!!5!5+5제공해야합니다 410때문에 2+2=4다음 요인과 그 다음 !5!5+5. 첫 번째 5는 사실이 아니라 5+5다른 느낌표 뒤에 있으며, 다시 한 번 사실입니다.
설명 :
- 느낌표는
+양쪽에 인접하지 않습니다 . +숫자에 대한 선행은 없습니다 (5, 아닙니다+5).- 첫 번째 앞에있는 표현식의 결과 인 경우 앞에 0을 선택적으로 포함 할 수 있습니다
!. 모두4와04입력 허용 출력 :0+0!4
요약 : 각 합계를 평가합니다 ( !구분자로 처리 ). 그런 다음 짝수 뒤에 나오는 모든 숫자를 버립니다 !(문자열의 시작부터 계산). 그런 다음 모두 제거합니다 !.
테스트 사례 :
!
<- Empty string
5
5
12!
12
!87
87
!!5
<- Empty string
5+5!2+2
104
5+5!!2+2
10
1!2!3!4!5!6!7!8!9
12468
10+10!!2+2!!3+3!4+4
208
2!!3!5
25
2!!3!5!7
25
10!!!!!!!5
105
이것은 코드 골프 이므로 바이트 단위의 가장 짧은 코드 (각 언어로)가 이깁니다! 설명을 강력히 권장합니다!
25(추가 된 테스트 사례 참조). 더 중요한 2!!3!5!7것은 여전히 왼쪽에 25짝수가 있기 때문 !입니다 7(따라서 숫자 앞에 런을 세는 것이 아니라 !왼쪽에 모두 있습니다).
Row있습니까?