요약 - 리스트 프로세서
Coddy Dart 여정의 로직 & 흐름 섹션에 포함된 레슨 — 65개 중 50번째.
챌린지
쉬움사용자 정의 가능한 리스트 프로세서를 구축하여 고차 함수(higher-order functions)를 보여주는 유연한 데이터 처리 시스템을 만드세요. 여러분의 프로그램은 서로 다른 처리 함수를 생성하고, 데이터 리스트에 모든 연산을 적용할 수 있는 메인 프로세서 함수를 사용하게 됩니다.
- 쉼표로 구분된 숫자가 포함된 문자열 입력을 읽습니다 (예:
"10,20,30,40") - 첫 번째 연산 유형을 나타내는 문자열 입력을 읽습니다 (
"multiply","add", 또는"subtract") - 첫 번째 연산에 사용할 값을 나타내는 문자열 입력을 읽습니다 (예:
"3") - 두 번째 연산 유형을 나타내는 문자열 입력을 읽습니다 (
"multiply","add", 또는"subtract") - 두 번째 연산에 사용할 값을 나타내는 문자열 입력을 읽습니다 (예:
"5") - 첫 번째 입력을 개별 숫자로 분리하고 각각을 정수로 변환합니다
- 세 개의 연산 함수를 생성합니다:
multiplyBy- 두 개의 정수를 받아 첫 번째 정수에 두 번째 정수를 곱한 값을 반환합니다addTo- 두 개의 정수를 받아 첫 번째 정수에 두 번째 정수를 더한 값을 반환합니다subtractFrom- 두 개의 정수를 받아 첫 번째 정수에서 두 번째 정수를 뺀 값을 반환합니다- 세 개의 매개변수를 받는
processListWithOperation이라는 메인 함수를 생성합니다: - 정수 리스트
- 두 개의 정수를 받아 정수를 반환하는 함수
- 연산에 사용할 정수 값
processListWithOperation함수는 제공된 값을 사용하여 리스트의 각 숫자에 주어진 함수를 적용하고, 그 결과로 새로운 리스트를 반환해야 합니다- 원본 리스트에 첫 번째 연산을 적용한 다음, 첫 번째 연산의 결과에 두 번째 연산을 적용합니다
- 결과를 아래에 표시된 정확한 형식으로 출력합니다
예를 들어, 입력값이 "2,4,6", "multiply", "3", "add", "10"인 경우, 프로그램은 다음과 같이 출력해야 합니다:
Advanced List Processor
=======================
Original list: [2, 4, 6]
First operation: multiply by 3
After first operation: [6, 12, 18]
Second operation: add 10
Final result: [16, 22, 28]
Processing completed successfully입력값이 "15,25,35", "subtract", "5", "multiply", "2"인 경우, 프로그램은 다음과 같이 출력해야 합니다:
Advanced List Processor
=======================
Original list: [15, 25, 35]
First operation: subtract 5
After first operation: [10, 20, 30]
Second operation: multiply by 2
Final result: [20, 40, 60]
Processing completed successfully여러분의 프로그램은 연산 유형 입력에 따라 적절한 연산 함수를 processListWithOperation에 전달함으로써 고차 함수를 입증해야 합니다. 조건문을 사용하여 각 연산에 대해 어떤 함수를 전달할지 결정하세요. processListWithOperation 함수는 입력 리스트를 반복(iterate)하면서 각 요소에 제공된 값과 함께 주어진 함수를 적용하고, 결과를 새 리스트에 수집해야 합니다. 첫 번째 연산의 결과를 두 번째 연산의 입력으로 사용하여 연산을 순차적으로 적용하세요.
직접 해보기
import 'dart:io';
void main() {
// 입력 읽기
String? numbersInput = stdin.readLineSync();
String? firstOperation = stdin.readLineSync();
String? firstValue = stdin.readLineSync();
String? secondOperation = stdin.readLineSync();
String? secondValue = stdin.readLineSync();
// 문자열 입력을 정수 리스트로 변환
List<int> originalList = numbersInput!.split(',').map((e) => int.parse(e.trim())).toList();
int firstOpValue = int.parse(firstValue!);
int secondOpValue = int.parse(secondValue!);
// TODO: 아래에 코드를 작성하세요
// 세 가지 연산 함수 생성: multiplyBy, addTo, subtractFrom
// processListWithOperation 함수 생성
// 연산을 순차적으로 적용하고 결과 저장
// 필요한 형식으로 결과 출력
print('Advanced List Processor');
print('=======================');
print('Original list: $originalList');
// 첫 번째 연산 및 결과 출력
// 두 번째 연산 및 최종 결과 출력
print('Processing completed successfully');
}로직 & 흐름의 모든 레슨
1고급 리스트 조작
리스트 속성: first 및 last리스트 상태: isEmpty 및 isNotEmpty리스트 뒤집기리스트에 추가: insert리스트 요소 제거: removeWhere리스트에서 찾기: indexOf리스트 정렬리스트 섞기요약 - 리스트 정리 도구