War card game: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (Thundergnat moved page War Card Game to War card game: Regularize task title capitalization) |
|||
Line 243: | Line 243: | ||
8♥ 4♣ Player 1 takes the cards. |
8♥ 4♣ Player 1 takes the cards. |
||
Player 1 wins the game. |
Player 1 wins the game. |
||
</pre> |
|||
=={{header|Perl}}== |
|||
There are two players, 'one' and 'two'. This shows each players hand as the game progresses. |
|||
<lang perl>#!/usr/bin/perl |
|||
use strict; # https://rosettacode.org/wiki/War_Card_Game |
|||
use warnings; |
|||
use List::Util qw( shuffle ); |
|||
my %rank; |
|||
@rank{ 2 .. 9, qw(t j q k a) } = 1 .. 13; # for winner |
|||
local $_ = join '', shuffle |
|||
map { my $f = $_; map $f.$_, qw( S H C D ) } 2 .. 9, qw( a t j q k ); |
|||
substr $_, 52, 0, "\n"; # split deck into two parts |
|||
my $war = ''; |
|||
my $cnt = 0; |
|||
$cnt++ while print( /(.*)\n(.*)/ && "one: $1\ntwo: $2\n\n" ), |
|||
s/^((.).)(.*)\n((?!\2)(.).)(.*)$/ my $win = $war; $war = ''; # capture |
|||
$rank{$2} > $rank{$5} ? "$3$1$4$win\n$6" : "$3\n$6$4$1$win" /e |
|||
|| |
|||
s/^(.{4})(.*)\n(.{4})(.*)$/ print "WAR!!!\n\n"; $war .= "$1$3"; |
|||
"$2\n$4" /e; # tie means war |
|||
print "player '", /^.{10}/ ? 'one' : 'two', "' wins in $cnt moves\n";</lang> |
|||
{{out}} |
|||
<pre> |
|||
one: 8CqCaD5H6S2HjC9S7HjH8S4DqD5C6DkC4H9D3DqHtC7C8DtS6C4S |
|||
two: 5S8HaCaH2C6H3HaS7DjD3S2D5D9CkSkH9H4C2StDtHjSkD7SqS3C |
|||
one: qCaD5H6S2HjC9S7HjH8S4DqD5C6DkC4H9D3DqHtC7C8DtS6C4S8C5S |
|||
two: 8HaCaH2C6H3HaS7DjD3S2D5D9CkSkH9H4C2StDtHjSkD7SqS3C |
|||
one: aD5H6S2HjC9S7HjH8S4DqD5C6DkC4H9D3DqHtC7C8DtS6C4S8C5SqC8H |
|||
two: aCaH2C6H3HaS7DjD3S2D5D9CkSkH9H4C2StDtHjSkD7SqS3C |
|||
WAR!!! |
|||
one: 6S2HjC9S7HjH8S4DqD5C6DkC4H9D3DqHtC7C8DtS6C4S8C5SqC8H |
|||
two: 2C6H3HaS7DjD3S2D5D9CkSkH9H4C2StDtHjSkD7SqS3C |
|||
one: 2HjC9S7HjH8S4DqD5C6DkC4H9D3DqHtC7C8DtS6C4S8C5SqC8H6S2CaD5HaCaH |
|||
two: 6H3HaS7DjD3S2D5D9CkSkH9H4C2StDtHjSkD7SqS3C |
|||
... (skipped middle part to save lines) |
|||
one: kC7HkHqCqH9SjS5StD4D3S2HaD7S8H4CkS4SaHjD8D6H4H3HjC7CtH5DtC2DjH2C9D6D6C2S6SkDqD9H9C5HtS3D |
|||
two: 8C7DaCqSaS5C8S3C |
|||
one: 7HkHqCqH9SjS5StD4D3S2HaD7S8H4CkS4SaHjD8D6H4H3HjC7CtH5DtC2DjH2C9D6D6C2S6SkDqD9H9C5HtS3DkC8C |
|||
two: 7DaCqSaS5C8S3C |
|||
WAR!!! |
|||
one: qCqH9SjS5StD4D3S2HaD7S8H4CkS4SaHjD8D6H4H3HjC7CtH5DtC2DjH2C9D6D6C2S6SkDqD9H9C5HtS3DkC8C |
|||
two: qSaS5C8S3C |
|||
WAR!!! |
|||
one: 9SjS5StD4D3S2HaD7S8H4CkS4SaHjD8D6H4H3HjC7CtH5DtC2DjH2C9D6D6C2S6SkDqD9H9C5HtS3DkC8C |
|||
two: 5C8S3C |
|||
one: jS5StD4D3S2HaD7S8H4CkS4SaHjD8D6H4H3HjC7CtH5DtC2DjH2C9D6D6C2S6SkDqD9H9C5HtS3DkC8C9S5C7HkH7DaCqCqHqSaS |
|||
two: 8S3C |
|||
one: 5StD4D3S2HaD7S8H4CkS4SaHjD8D6H4H3HjC7CtH5DtC2DjH2C9D6D6C2S6SkDqD9H9C5HtS3DkC8C9S5C7HkH7DaCqCqHqSaSjS8S |
|||
two: 3C |
|||
one: tD4D3S2HaD7S8H4CkS4SaHjD8D6H4H3HjC7CtH5DtC2DjH2C9D6D6C2S6SkDqD9H9C5HtS3DkC8C9S5C7HkH7DaCqCqHqSaSjS8S5S3C |
|||
two: |
|||
player 'one' wins in 117 moves |
|||
</pre> |
</pre> |
||