Sent from ProtonMail, encrypted email based in Switzerland. ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐ On Sunday, October 11, 2020 3:54 PM, Cameron Simpson <cs@xxxxxxxxxx> wrote: > On 11Oct2020 18:54, None olivares33561@xxxxxxxxxxxxxx wrote: > > > The play 15 different sets of numbers and to check if they won any prize a script using a chain of if statements or case statements would be correct to implement this. AWK may also do the job? > > There are six numbers that we need to check let us suppose that we had the numbers in a file numbers.dat and it has the fifteen combinations > > 2 - 3 - 5 - 7 - 11 - 13 > > ... > > ... > > 15 versions > > Check against the winning numbers > > 2 - 7 - 23 - 38 - 51 - 53 > > Faster way to check compare string? Compare numbers one by one and check for at least 3 > > This feels somewhat like homework, so I'll provide suggests instead of > complete code. Besides, you probably want to write it yourself. > > If you're doing this in the shell (/bin/sh), a case statement is a > surprisingly quick way to test the presence of a value against a list. > > Suppose you've got one number in $value. Suppose you have the list to > compare against in $numbers as a string separated by commas. Then this: > > case ",$numbers," in > ",$value,") > echo "$value is present in $numbers!" > ;; > esac > > can be used to check. Since you're counting matches set a counter to 0 > and iterate over the values, and increment the counter once in the case > statement. Check the counter after the loop. > > If you've really got a string like "2 - 3 - 5 - 7 - 11 - 13" it is > trivial to use " - " as the separator instead of a comma. > > You can easily write a shell function to compare a batch of values. > > Then you can iterate over the file in numbers.dat looking counting the > matches for each line: > > while read numbers > do > ... compare $numbers against your picked numbers ... > done < numbers.dat > > This if-statement: > > > If (successful numbers >= 3) > > Write you have won $3 > > If (successful numbers >= 4) > > Write you have won $56 > > If (successful numbers >= 5) > > Write you have won $156 > > If (successful numbers > 5) > > Write you are a millionaire and have won the jackpot > > Is better written as a case statement, testing the count from your > comparison function. > > case $count in > ......... the various values ... > 5) echo "156" ;; > 6) echo "you are a millionaire" ;; > esac > > Cheers, > Cameron Simpson cs@xxxxxxxxxx > > users mailing list -- users@xxxxxxxxxxxxxxxxxxxxxxx > To unsubscribe send an email to users-leave@xxxxxxxxxxxxxxxxxxxxxxx > Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ > List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines > List Archives: https://lists.fedoraproject.org/archives/list/users@xxxxxxxxxxxxxxxxxxxxxxx Thank you for your help. This is not a homework problem. It is a time saving thing, we can check online input the numbers one by one, but there are 15 sets. It takes time. Having a bash script can do the job, but question is do we get the winning numbers as integers, or do we compare them as strings? If we compare numbers (num1 == $num1) Or [ ] I have problems with the scripts working correctly and getting '(' expected. I will try to write the script and ask for help if I run into problems. I have seen pages where there are references with awk, seq and other commands https://www.unix.com/shell-programming-and-scripting/276553-lottery-number-checker.html https://www.txlottery.org/export/sites/lottery/Games/Check_Your_Numbers.html I wanted to use grep command by piping the cat command, but I have dilemma that if an array is used, the code is cleaner and more efficient. Best Regards, Antonio _______________________________________________ users mailing list -- users@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to users-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/users@xxxxxxxxxxxxxxxxxxxxxxx