Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use common::sense;
- use DDP;
- #######################
- #Desafio Amigo Secreto#
- # guedes.acp #
- # Forum Invaders #
- #forum-invaders.com.br#
- #######################
- my @n;
- my $n;
- my $c = 0;
- @SIG{qw(INT TERM HUP)} = sub { $c >= 2 ? die : $c++ };
- {
- my $nome;
- sub opglobp{
- say "Insira o numero de partidipantes";
- chomp ($n = <>);
- $n = participantes($n);
- &opfn;
- }
- sub opglobn{
- say "Insira o nome do partidipante";
- chomp ($nome = <>);
- nomes($nome) ? push(@n, $nome) : &opglobn;
- }
- sub opfn{
- for (my $i = 0; $i <= $n -1; $i){
- opglobn;
- $i++;
- }
- &main;
- }
- }
- sub help{
- given($_[0]){
- when(1){say "O numero de participantes deve ser maior ou igual a 3"; return 0}
- when(2){say "Nao e permitido nomes com menos de 4 caracteres";opglobn}
- }
- }
- sub participantes {($_[0] <= 2) ? return help(1) : return $_[0]} #determina n de participantes
- sub nomes {(length $_[0] < 4) ? return help(2) : return $_[0]} #recebe os nomes dos participantes
- sub sortname{ my $p = int rand(@_); return $_[$p], $p}
- sub main {
- my @nomes = @n;
- my @nomesi = @nomes;
- my $cn = @nomes;
- my %sort;
- DUMP: for (my $i =0; $i <= $cn; $i++){
- my ($s, $po) = sortname(@nomes);
- my ($si, $poi) = sortname(@nomesi);
- if ($s ne $si){
- splice(@nomes, $po, 1);
- splice(@nomesi, $poi, 1);
- if(!exists $sort{$si}){
- $sort{$s} = $si;
- }
- else{
- if($sort{$si} eq $s){
- $sort{$si} = $sort{$si} . " =>ambos";
- }
- else{
- $sort{$s} = $si;
- }
- }
- }
- else{ if (@nomes != 0) {$i--; next DUMP;}}
- }
- p %sort;
- }
- opglobp;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement