당신의 임무는 주어진 템플릿을 완성하여 유효한 저글링 패턴을 생성하는 것입니다. 그러나 먼저 그러한 패턴이 어떻게 표시되는지 알아야합니다.
Siteswap 소개
Siteswap은 저글링 패턴에 대해 확립 된 표기법입니다. 패턴을 비트로 나누어 작동합니다. 각각의 이길 때마다 공을 던질 때 왼손과 오른손이 번갈아 나타납니다. 각 드로우 (즉, 각 비트)는 그 볼이 다음에 던져 질 때를 나타내는 숫자로 표시됩니다. 이것은 드로우의 높이에 직접적으로 해당합니다.
몇 가지 예를 살펴 보겠습니다. 여기에서이 모든 애니메이션을보십시오 .
3 구 캐스케이드
가장 간단한 3 구 패턴. 각 공은 세 번째 박자마다 (교대 손) 던져집니다. 비트를 작성하면 다음과 같이 보입니다 (ASCII 라인은 동일한 볼이 던져지는 두 비트를 연결합니다).
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap 3 3 3 3 3 3 3 3 3
└─┼─┼─┘ │ │
└─┼───┘ │
└─────┘
던져 모든 볼 방법을 참고 L
비트가,가 AT 다음 발생합니다 R
이 패턴은 일반적으로 표시되도록 beat.Siteswap 패턴, 암시 적으로 반복 333
간단하지만, 3
도 충분할 것이다.
441
siteswap 441 의 약간 더 복잡한 예는 다음과 같습니다 .
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap 4 4 1 4 4 1 4 4 1
│ │ └─┘ │ │
└─┼─────┘ │
└───────┘
홀수 번 던지기는 던진 손과 같은 방향으로 진행되는 반면 홀수 번 던지는 반면에 발생합니다.
423
때로는 공을 던지는 대신 비트를 통해 공을 잡고 싶어합니다. 다시 말해서,이 공은 다음 번에이 핸드의 턴에 던져집니다. 즉, 2 비트 후에. 따라서 공을 잡는 것은 2
패턴에서 와 같습니다 .
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap 4 2 3 4 2 3 4 2 3
│ └─┼─┘ │ │
│ └───┼─┘
└───────┘
50505
A 0
는이 패턴이 보여주는 것처럼 현재 핸드가 그 비트에서 비어 있음을 의미합니다.
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap 5 0 5 0 5 5 0 5 0
└───┼───┼─┘ │
└───┼─────┘
└───────>
멀티 플렉스 저글링
이 문제는 바닐라 사이트 스왑을 사용하면 너무 간단합니다. 멀티 플렉스 패턴을 입력하십시오! 멀티 플렉스 저글링은 한 손에서 동시에 여러 볼을 던지는 것을 의미합니다. 예를 들어, 위의 3 구슬 캐스케이드에서 세 번째 박자마다 2 구를 더 던지면 패턴은 [33]33
다음과 같이됩니다.
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap [33] 3 3 [33] 3 3 [33] 3 3
└┴──┼─┼──┴┘ │ │
└─┼──────┘ │
└────────┘
다음은 멀티 플렉스 스로우의 높이 / 길이가 다른 두 가지 예입니다. 그것은 하나로 표시 할 수 [34]11
또는 [43]11
:
Beat 1 2 3 4 5 6 7 8 9
Hand L R L R L R L R L
Siteswap [43] 1 1 [43] 1 1 [43] 1 1
││ └─┴──┘│ │
│└────────┘ │
└────────────┘
( 1
투척 된 비트는 비트에 2
착륙하고 비트 에 착륙 하여 두 번째 멀티 플렉스 스로의 일부가되기 위해 3
즉시 또 다른 것으로 던져집니다.)1
4
이 게시물의 시작 부분에서 애니메이션에 대한 사이트 스왑은 [53]15121
입니다.
패턴 유효성
패턴이 의미 적으로 유효하기 위해서는 핸드의 볼 수는 항상 해당 비트에 표시된 드로우 수와 일치해야합니다. 이 수단은, 기호가있는 비트에 착륙에는 볼이 없어야합니다 0
, 다른 한 자리와 비트에 하나의 볼 착륙이 있어야하고,이 있어야 N 멀티 플렉스 비트, 어디에 착륙 공 N 의 자리수 그 다중 던지기에서. 패턴도 원활하게 반복 할 수 있어야합니다.
유효하지 않은 패턴의 예는 543
(모든 공이 같은 비트에 착륙), 240
( 비트에 2
착륙 0
) 또는 33[24]
(다중 비트에 공이 착륙하지 않지만 두 공이 다른 두 비트에 착륙하는 것)입니다.
도전
와일드 카드가 포함 된 사이트 스왑 패턴을 가져 와서 와일드 카드가 채워진 유효한 패턴을 출력합니다.
로 받아 (표준 입력 명령 줄 인수 파일 또는 함수 파라미터를 통해) 입력 형식 문자열
n s
여기서 n
사용되는 볼의 개수를 나타내는 정수이고, s
(a 사이트 스왑 패턴이다 없이 공백). 구문 상 정확 하다고 가정 할 수 있습니다. 모든 대괄호가 일치하고 중첩되지 않으며 예기치 않은 문자가 없습니다. 모든 던지기는 한 자리 던지기 ( 0
- 9
)입니다. 그러나 일부 비트 는 단지로 표시 될 수 있으며 _
, 이는 출력에서 단일 또는 다중 스로우로 채워집니다.
참고 : 같은 것이 입력의 일부 [_3]
가 아닙니다 . 전체 비트가 누락되었거나 전체 비트가 제공됩니다.
주어진 볼 수로 저글링 할 수 있고 지정된 모든 비트의 입력 패턴과 일치하는 유효한 패턴을 출력합니다. 주어진 입력에 유효한 패턴이 없으면 output을 출력하십시오 !
. 출력 은 stdout을 통해, 파일로 또는 함수 리턴 값으로도 이루어집니다.
참고 : 출력에는 불필요한 대괄호 나 멀티 플렉스 던지기에 0이 포함되지 않아야합니다. 따라서 출력을 포함 [3]
하거나 [03]
허용하지 않는 출력을 3
대신 출력해야 합니다. 멀티플 스로우에서 숫자의 순서는 관련이 없습니다.
참고 : 순환 순열에서 중복 된 패턴을 생략 할 수 있습니다 . 입력 예 3 __
(두 개의 와일드 카드를 주) 모두 42
와 24
(다른 사람의 사이에서) 유효 답변입니다,하지만 그들은 실제로 같은 패턴을 설명합니다. 둘 다 출력하거나 둘 중 하나만 출력 할 수 있지만 일관되게 수행해야합니다.
이것은 코드 골프 이며, 가장 짧은 코드가 이깁니다 (질문 하단에 나열된 보너스에 따라 다름).
JugglingLab 을 사용 하여 패턴이 유효한지와 패턴이 어떤지 확인할 수 있습니다.
예
Input Possible Outputs Comments
3 _ 3
[21]
[111]
3 4_3 423
4 4_2 4[51]2
4[42]2
4[321]2
3 _23_ 6231
4233
323[31]
2235
223[41]
0237
023[43]
[42]231
[32]23[11]
4 5_3 ! 5 and 3 will both land at the third beat, but
there is only a single throw at that beat. This
cannot be fixed with any throw in the blank.
2 5_4 ! Any possible throw in the wildcard (including a
0) will make a pattern for at least 3 balls.
3 54_ ! The only solution that would correspond to a
3-ball pattern is 540, which is not semantically
valid because the 5 and 4 both land at beat 3.
There are valid solutions, but they require at
least 4 balls.
보너스
- 답이 문자 (10 = A, 11 = B, ...)로 표시된 최대 35 자리의 "숫자"를 처리 할 수 있으면 20자를 뺍니다 . 해당 문자를 대문자, 소문자 또는 대소 문자를 구분해야하는지 여부를 결정할 수 있습니다. (정글 패턴을보고 싶다면 JugglingLab에서 소문자로 처리 할 수 있습니다.)
- 답이 유효한 모든 솔루션을 출력 하면 20자를 뺍니다 .