|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Sergei Boytsov 2:5005/78.41 18 Dec 2000 18:08:18 To : Sergey Averichev Subject : Cards mixing -------------------------------------------------------------------------------- At 18 Dec 00 14:17:48, Sergey Averichev wrote to Sergei Boytsov: SA> Hello Sergei! SA> Monday December 18 2000 02:51, you wrote to All: SB>> Пусть 1..52 означают карты в колоде. Как покрасивее на перле написать SB>> перемешивание и раздачу всей колоды 4 игрокам? SA> @randlist=(1..52); SA> foreach $count(0..51) SA> { SA> $rnd=int(rand(@randlist)); SA> $x[$count]=$randlist[$rnd]; SA> splice (@randlist,$rnd,1); SA> } SA> В конце процедуры @x содержит перетасованную колоду, осталось только SA> раздать. SA> Если перл ниже 5.004 - не забыть перед перетасовкой раскрутить генератор SA> с.ч. SA> Может кто покороче сделает? Самому интересно. > skipped < Hу, я, например, так сделал! >===== Open PIPE [dmonk@relay2> cat /usr/user/bsn/Perl/cards.pl] =====< #!/usr/bin/perl my @mcards=(1..52); srand(time); for (1..52) { my ($a,$b)=(rand(52),rand(52)); @mcards[$a,$b]=@mcards[$b,$a]; } print (join(' ', @mcards[(0..12)]), "\n"); print (join(' ', @mcards[(13..25)]), "\n"); print (join(' ', @mcards[(26..38)]), "\n"); print (join(' ', @mcards[(39..51)]), "\n"); >===== Close PIPE [dmonk@relay2> cat /usr/user/bsn/Perl/cards.pl] =====< /Queen --- QDed beta-1.4-990224/FreeBSD * Origin: Physiology Chair of SSMU (2:5005/78.41) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/33533a3e00b8.html, оценка из 5, голосов 10
|