Análisis de datos asíncrono con límite de concurrencia

C# Hard async

Tarea «Análisis de datos asíncrono con límite de concurrencia»

Desarrolle una aplicación de consola asíncrona que lea desde stdin un número N, luego N líneas, cada línea contiene un número entero. La aplicación debe procesar cada número utilizando la función asíncrona SimulateWorkAsync(int value), que simula un retardo (value ms) y devuelve el cuadrado del número. Es necesario limitar el número máximo de tareas simultáneas a 3. Mostrar los resultados en el orden de finalización de las tareas (no en el orden de entrada). Si alguna tarea finaliza con una excepción (por ejemplo, cuando value < 0), la aplicación debe esperar a que finalicen todas las tareas, mostrar "Error" y finalizar. Use SemaphoreSlim para gestionar la concurrencia.

Formato de entrada

La primera línea es un número entero N (1 ≤ N ≤ 100). Luego N líneas, cada una contiene un número entero de -10 a 10.

Formato de salida

Para cada resultado exitoso, muestre el cuadrado del número en una línea separada en el orden de finalización de las tareas. Si ocurre un error, muestre solo "Error".

Ejemplos

Ejemplo 1

ENTRADA
2 5 2
SALIDA
4 25

Ejemplo 2

ENTRADA
2 https://httpbin.org/status/200 https://httpbin.org/status/404 5000
SALIDA
Error

Ejemplo 3

ENTRADA
2 -1 4
SALIDA
Error
main.cs