#!/usr/bin/perl use 5.012;use warnings;use List::Util qw(shuffle);my@c=shuffle(2..99);my@h= splice@c,0,7;my@s=([1],[1],[100],[100]);while(){for(0,1){say "\n\n\tA\tB\tC\tD\t\t",~~@c," cards";for my$i(0..99){my@s=map{$s[$_][$i]||" " }0..3;(~~grep$_ ne" ",@s)?say"\t",join"\t",@s:(say"\nhand: ",join", ",sort{$a <=>$b}@h)&&last}exit say"=== YOU LOSE ===\n","# Todo: ",@c+@h if sub{for my$c (@h){p($_,$c)&&return 0for@s}1}->();my($s,$c);do{print"> ";($s,$c)= ~~ =~/([AaBbCcDd])\s*(\d\d?)/;$s=$s[ord(uc$s)-ord"A"]if$c}until$c&&p($s,$c)&& grep$_ eq$c,@h;push@$s,$c;@h=grep$_ ne$c,@h;exit!say"=== YOU WIN ===\n"if!( @c+@h)}push@h,pop@c while$#h<6&&@c}sub p{my($s,$c)=@_;my$t=$s->[-1];$s->[0]== 1?$t<$c||$c==$t-10:$t>$c||$c==$t+10}