Bash: "magic" cards

For discussions about programming, and for programming questions and advice


Moderator: Forum moderators

Post Reply
User avatar
puppy_apprentice
Posts: 661
Joined: Tue Oct 06, 2020 8:43 pm
Location: land of bigos and schabowy ;)
Has thanked: 4 times
Been thanked: 107 times

Bash: "magic" cards

Post by puppy_apprentice »

Old trick from my childhood.

Code: Select all

figures=(9 10 J Q K A)
colors=(♥ ♦ ♣ ♠)
numberofcards=$((${#figures[@]}*${#colors[@]}))
c=1
groups=4
echo Choose one of cards...
while [ $c -le $numberofcards ]
do
	card=${figures[$RANDOM%(6)]}${colors[$RANDOM%(4)]}
	if [[ $sequence != *$card* ]]; then
		sequence+=$card" "
		((c+=1))
	fi
done
echo $sequence
read -rsp "Press any key to continue..." -n 1
sequence=($sequence)


for (( i=0;i<=$numberofcards / $groups;i++ ))
do
	group1+=${sequence[i*$groups]}" "
	group2+=${sequence[i*$groups+1]}" "
	group3+=${sequence[i*$groups+2]}" "
	group4+=${sequence[i*$groups+3]}" "
done
echo -e "\n"
echo 1. $group1
echo 2. $group2
echo 3. $group3
echo 4. $group4
read -n 1 -p "To which group this card belong?: " group
echo -e "\n"
if [[ $group == 1 ]]
then
	sequence=($group1$group2$group3$group4)
fi
if [[ $group == 2 ]]
then
 	sequence=($group2$group3$group4$group1)
fi
if [[ $group == 3 ]]
then
 	sequence=($group3$group4$group1$group2)
fi
if [[ $group == 4 ]]
then
 	sequence=($group4$group1$group2$group3)
fi
((groups+=-1))

group1=""
group2=""
group3=""
group4=""

for (( i=0;i<=$numberofcards / $groups;i++ ))
do
		group1+=${sequence[i*$groups]}" "
		group2+=${sequence[i*$groups+1]}" "
		group3+=${sequence[i*$groups+2]}" "
done

echo 1. $group1
echo 2. $group2
echo 3. $group3

read -n 1 -p "To which group this card belong now?: " group
echo -e "\n"

if [[ $group == 1 ]]
then
	sequence=($group1$group2$group3)
fi
if [[ $group == 2 ]]
then
 	sequence=($group2$group3$group1)
fi
if [[ $group == 3 ]]
then
 	sequence=($group3$group1$group2)
fi
((groups+=-1))

group1=""
group2=""
group3=""

for (( i=0;i<=$numberofcards / $groups;i++ ))
do
		group1+=${sequence[i*$groups]}" "
		group2+=${sequence[i*$groups+1]}" "
done

echo 1. $group1
echo 2. $group2

read -n 1 -p "To which group this card belong now?: " group
echo -e "\n"

if [[ $group == 1 ]]
then
	sequence=($group1$group2)
fi
if [[ $group == 2 ]]
then
 	sequence=($group2$group1)
fi
echo Your card is ${sequence[0]}
Post Reply

Return to “Programming”