Cherry picking with sed?

 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Cherry picking with sed?
# 1  
Old 02-11-2017
Cherry picking with sed?

Code:
#!/bin/bash

shuffle() 
{
Deck=$(shuf -e {2,3,4,5,6,7,8,9,T,J,Q,K,A}{H,S,D,C})
}

PH=(6H 9S KC)  # playerhand
CH=(JD 4D)        # computerhand
AC=2S                # activecard

shuffle
echo $Deck

I am unsure about how to proceed. I want to reshuffle a deck but without the cards in $PH, $CH, and $AC. Could it be done using sed? Any help would be greatly appreciated.
Thank you in advance.
Cogiz
# 2  
Old 02-11-2017
How did you get to a point where you have dealt at least six cards from a deck, but don't know what cards remain in that deck? One might guess that in most card games you would have known hands for various players, a know set of cards in a discard pile, and a known set of cards remaining in the deck. In a state like this, it would seem to be fairly easy to "shuffle" the discard pile and the current contents of the deck to produce an updated deck rather than create a new deck of 52 cards (some of which duplicate other cards in play).

But, having said that, how do you plan to remove a card from the "deck" when a card is drawn from the deck? Is there any reason why removing the top card from the "deck" should be much different from removing any other card from the "deck"?
# 3  
Old 02-12-2017
Don is absolutely right. This is not a question of how to use a certain tool (you mentioned sed but the same goes for any other likewise). You should look at your data structure and how you handle that instead.

My suggestion is to use a (fixed) array of cards. This array of 52 (or, depending on what deck of cards you want to use a different number) elements (cards) then is filled with a location of the card, i.e "" for the card being the deck, "P" for it being in the player hand, "D" for it being in the discard pile, etc..

The process of dealing a card to the player then means to change the contents of the respective element in the cards-array from "" to "P" - analogously with all the other movements of cards. This way you just query the array for all the cards with value "P" (=the content of the player hand) and so on.

I hope this helps.

bakunin
# 4  
Old 02-12-2017
Fully seconding my esteemed colleagues' advice that it definitely pays off to do a decent planning on data structures, algorithms, and desired outcomes instead of doing a later repair of accidents or errors, here's two hints on how to remove several cards from a fully shuffled full deck (assuming a recent bash shell):
Code:
for CU in ${PH[@]} ${CH[@]} $AC; do Deck=${Deck/${CU}$'\n'/};done

Code:
OI="$IFS"; IFS=$'\n'; grep -vf <(echo "${PH[*]}$IFS${CH[*]}$IFS$AC") <(echo "$Deck"); IFS="$OI"

Login or Register to Ask a Question

Previous Thread | Next Thread

8 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Picking up files conditionally

Hi I have a scenario: I have a directory say DIR1 (no sub directories) and have few files in that directory as given below: app-cnd-imp-20150820.txt app-cxyzm-imp-20150820.txt app-petco-imp-20150820.txt app-mobility-imp-20150820.txt app-mobility-imp-20150821.txt... (7 Replies)
Discussion started by: Saanvi1
7 Replies

2. Shell Programming and Scripting

Picking values from a file.

Hi, I have a file which contains values in this format. abc cde fgh ijk lmn opq rst uvw The user will pass the required parameter from the command line. My requirement is that script should pick the values passed by the user and the next value in the next line. Like if the user... (10 Replies)
Discussion started by: arijitsaha
10 Replies

3. Shell Programming and Scripting

awk not picking up /PP SIZE/

for vgls in `lsvg` do lsvg $vgls | awk '/^VOLUME GROUP/ { printf "%s ", $3 } /PP SIZE/ { S=$6 } /TOTAL PPs/ { printf "%d ", $6*S/1024 } /FREE PPs/ { print $6*S/1024 } ' done This returns /TOTAL PPs/ and /FREE PPs/ fine, but not /PP SIZE/. Please advise. (11 Replies)
Discussion started by: Daniel Gate
11 Replies

4. Shell Programming and Scripting

sed command for picking a part of line

Hello Friends I want to use sed command to pick a part of line. FOr example I only need the /home_put1/bidds/myfo part of following line fish://ulavet@rits1.ula.com.tr/home_put1/bidds/myfo How can I do this bu using sed command ? (2 Replies)
Discussion started by: rpf
2 Replies

5. Shell Programming and Scripting

Picking matching strings

I have a list of file names. However in some instances I might have a "-" at the beginning of the filename or an "=". For example I might have something like this set Lst = "file1 file2 file3 -file4 file5=" I want to pick up the ones having "-" at the beginning or "=" and store them in... (22 Replies)
Discussion started by: kristinu
22 Replies

6. Shell Programming and Scripting

need help on picking a right book

hi, I'm searching for a perfect book to learn awk programming, i started with sed&awk book, but i think this book might be outdated as it is written way back in 97 and also it doesn't have many examples. So, I thought of getting some advice from the experts here. Pls suggest me some books. ... (1 Reply)
Discussion started by: dvah
1 Replies

7. UNIX for Dummies Questions & Answers

Picking problem with printers

Hello to everybody i have problem the picking process falls and falls. I dont now what the picking process do i believe that is a print server on a data base i dont know where to look. Is a solaris 10 with korn sheell the process show this ps -ef | grep picking batch 18466 1 0... (5 Replies)
Discussion started by: enkei17
5 Replies

8. UNIX for Advanced & Expert Users

Using awk : picking specified columns

Hi, I would like to get some specific fields from one long line. My line looks like CcnCDRFile0-8535123473201007170536_2010-07-20_17:06:02:,,9963387265,,,,,00720141432,,+0.310,+79.255,+78.945,,,,1492,,,,0,... (1 Reply)
Discussion started by: kkarthik_kaja
1 Replies
Login or Register to Ask a Question