스트림 처리
코드 출현 2017 9일 차
퍼즐 입력을 사용하여 시뮬레이터를 사용해보십시오!
1 부
for
루프 및 flag
줄을 서서...다시
2021 Day 10: Syntax Scoring이 생각난다
몇 가지 차이점:
corrupted
문자열을 식별하는 것으로 시작되었습니다. 이 퍼즐에는 올바른 문자열이 있습니다...쓰레기로 가득 차 있습니다! garbage
데이터for 루프와 플래그
이것이 내 알고리즘의 핵심 측면이 될 것이라고 생각합니다.
Initialize a flag for garbage mode to false
For each character in the string
If in garbage mode
Check for exclamation marks
If one is encountered, skip a character
Keep walking
If not in garbage mode
If next character is <
Enter garbage mode
Else, if next character is {
Account for another group, possibly at the same or next level
Else if next character is }
Update the accumulating score to account for the group that just closed
Else if next character is anything else
Keep walking
내가 놓친 조건에 더 미세한 세부 정보가 있을 수 있지만 이것이 내가 작성하려는 알고리즘의 개요입니다.
작동하는 알고리즘을 작성할 수 있다고 가정하고 내가 얼마나 멀었는지 봅시다!
내 알고리즘 작성 및 테스트
고맙게도 지침은 많은 단위 테스트를 제공합니다.
저는 이 알고리즘을 조건별로 작성하여 간단한 테스트 몇 개를 통과한 다음 더 복잡한 테스트를 통과하도록 할 것입니다. 그런 다음 퍼즐 입력을 바랍니다.
예제 1-4 작동시키기
{} = 1
{{{}}} = 6
{{},{}} = 5
{{{},{},{{}}}} = 16
내 작업 알고리즘:
Setup:
Split the input at each character into an array of characters
Create score, starting at 0
Create level, starting at 1
Loop:
For each character in the stream except the last
Depending on what the next character is:
If it is a {
Increment level by 1
Else, if it is a }
Increment score by level
Decrement level
Return score
이제
garbage
에 대한 회계를 시작합니다.예제 6, 7, 9 작동시키기
{<a>,<a>,<a>,<a>} = 1
{{<a>},{<a>},{<a>},{<a>}} = 9
{{<ab>},{<ab>},{<ab>},{<ab>}} = 9
내 작업 알고리즘:
Setup:
Split the input at each character into an array of characters
Create score, starting at 0
Create level, starting at 1
Create flag for garbage mode, starting at false
Loop:
For each character in the stream except the last
Depending on what the next character is:
If garbage mode is on
If it is a >
Turn garbage mode off
Else, garbage mode is off
If it is a {
Increment level by 1
Else, if it is a }
Increment score by level
Decrement level
Else, if it is a <
Turn garbage mode on
Return score
예제 8, 10, 11 작동시키기
{{<!>},{<!>},{<!>},{<a>}} = 3
{{<!!>},{<!!>},{<!!>},{<!!>}} = 9
{{<a!>},{<a!>},{<a!>},{<ab>}} = 3
내 작업 알고리즘:
Setup:
Split the input at each character into an array of characters
Create score, starting at 0
Create level, starting at 1
Create flag for garbage mode, starting at false
Loop:
For each character in the stream except the last
Depending on what the next character is:
If garbage mode is on
If it is a >
Turn garbage mode off
If it is a !
Increment the character location tracker by 1 to skip a character in the stream
Else, garbage mode is off
If it is a {
Increment level by 1
Else, if it is a }
Increment score by level
Decrement level
Else, if it is a <
Turn garbage mode on
Return score
내 퍼즐 입력 테스트
2 부
물론 쓰레기 수거!
추적 카운터와 내
case
문 중 하나의 적절한 switch
에서 하나씩 증가하는 문을 추가하기만 하면 됩니다.내 작업 알고리즘:
Setup:
Split the input at each character into an array of characters
Create score, starting at 0
Create level, starting at 1
Create flag for garbage mode, starting at false
Create garbage, starting at 0
Loop:
For each character in the stream except the last
Depending on what the next character is:
If garbage mode is on
If it is a >
Turn garbage mode off
If it is a !
Increment the character location tracker by 1 to skip a character in the stream
Otherwise
Increment garbage by 1
Else, garbage mode is off
If it is a {
Increment level by 1
Else, if it is a }
Increment score by level
Decrement level
Else, if it is a <
Turn garbage mode on
Return garbage
파트 2에 대한 정답을 생성하는 데 필요한 전부입니다!
해냈어!!
switch
문을 사용했는데 이 퍼즐 전체에서 너무 자주 사용하지 않습니다. 나는 종종 키-값 조회를 활용할 수 있도록 사전을 선택합니다이 퍼즐을 한 번에 풀려고 하지 않았거나 필요 이상으로 고생했을 수도 있으니 다행입니다.
Reference
이 문제에 관하여(스트림 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rmion/stream-processing-23jn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)