0votos

encuesta anonima en Shell

por josejuan hace 4 años

while read -p '> ' i; do grep ",$i" students | cut -d, -f1; done

Uno de los desafios de tuentichallenge

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
while read -p '> ' i; do grep ",$i" students | cut -d, -f1; done 
 
 
 
 
 
Por ejemplo: 
 
Encuesta$ while read -p '> ' i; do grep ",$i" students | cut -d, -f1; done 
> F,19,Clinical Laboratory Science,4 
Georgina Harris Long 
Alice Morgan Rogers 
> M,27,Environmental Science,1 
Josh Collins Williams 
Peter Hughes Rivera 
> M,23,Pharmacology,1 
Alexander Howard Gray 
Jude Adams Bell 
> ^C 
Encuesta$ _ 
4 comentarios
0votos

Escrito por carlosjm4 hace 4 años

Hola Jose juan, Gracias por responder al desafio, pero uno de los puntos es que la salida debe tener el siguiente formato:

Case #1: NONE
Case #2: Morgan Martinez Moore
Case #3: Alfie Hernandez Diaz
Case #4: Mohammad Green Morales,Oliver Carter Rivera
Case #5: Ellie Brown Reed,Laura Stewart Foster,Nicole Peterson Torres
0votos

Escrito por josejuan hace 4 años

Lo cual es muy relevante... ;P

Ignorando la primera línea (no necesito saber de antemano el nº de líneas), numerando cada resultado y juntado nombres separados por coma, podría ser:
n=0; read i; while read i; do n=$((n+1)); echo "CASE #$n: "`grep ",$i" students | cut -d, -f1  | tr "\\n" ","`; done


O si la coma final molesta mucho:
n=0; read i; while read i; do n=$((n+1)); echo "CASE #$n: "$(echo `grep ",$i" students | cut -d, -f1  | tr "\\n" ","` | sed 's/,$//'); done


Cuya salida sería:
CASE #1: Rachel Ortiz Long,Olivia Jackson Davis,Bethany Reed Lewis,Lydia Barnes Ortiz,Freya Brown Brooks
CASE #2: Rhys Robinson Scott
CASE #3: Millie Campbell Martin
CASE #4: Lily Barnes Watson,Ella Cook Gray,Madeleine Moore Cooper,Zara Garcia Ramirez,Summer Young Nguyen
CASE #5: Naomi Cook Fisher,Jessica Barnes White
CASE #6: Isabelle Davis White
...


Yo, subjetivamente, suelo centrarme en el problema principal que plantea el desafío. En algunos casos, el desafío puede consistir en imprimir de cierta forma (ej. FizzBuzz), en otros un cálculo (en cuyo caso, por ejemplo, daría igual indicar 0.25 que 1/4, salvo que "la gracia" del desafío sea considerar fracciones), etc...

Entiendo que es algo subjetivo, pero entre el blanco (ceñirse escrupulosamente a un enunciado que, normalmente, contiene ambigüedades) y el negro (resolver algo que no tiene nada que ver con el desafío) hay muchos grises que podríamos considerar como "soluciones que aportan algo al desafío propuesto"

En este caso, obtener exactamente la misma salida que la indicada, no supone un cambio importante en mi solución, de ahí que yo no le diera mucha importancia.

:)
0votos

Escrito por carlosjm4 hace 4 años

Listo, ahora si :-)).

Bueno tal vez para ti que eres un experto, habrá muchas cosas que te parezcan IRRELEVANTES dentro de los requerimientos para un desafió, pero habemos muchas personas que estamos aprendiendo y queremos saber como se hacen algunas cosas, inclusive una simple salida en un formato (por ejemplo una coma final), en ocasiones es un reto cuando uno esta empezando.

De esta manera creo que bien dices en "Lo cual es muy relevante... ;P...., para este desafió una de las partes del reto puede haber sido esa.
1votos

Escrito por josejuan hace 4 años

Totalmente de acuerdo @carlosjm4, por eso he enfatizado (intentado al menos) que es un aspecto totalmente subjetivo (blanco...negro).

Así, quizás veas que muchas de mis soluciones están "incompletas" :D y seguro que algunas en exceso (porque me habré centrado en algún aspecto concreto).

Gracias en cualquier caso por el apunte ;)

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.