Sha256: 3e505ced5822393c42c08dde3fd9bf9a1efd5c8047c38c3e50ff10b8bd8d79dd

Contents?: true

Size: 519 Bytes

Versions: 83

Compression:

Stored size: 519 Bytes

Contents

unit class Robot:ver<2>;

subset Name of Str where * ~~ /^<[A..Z]>**2 <[0..9]>**3$/;
has Name $.name = self.reset-name;

method reset-name {
  state Promise:D $promise = start ('AA000'..'ZZ999').pick: *;
  state Bool:D %record{Name:D};
  state Int:D $i = 0;

  if $promise.status ~~ 'Kept' {
    ($!name = $promise.result[$i++]) or die 'All names used.';
  } else {
    $!name = ('A'..'Z').roll(2).join ~ (^10).roll(3).join;
  }
  self.reset-name if %record{$!name}:exists;
  %record{$!name} = True;
  return $!name;
}

Version data entries

83 entries across 83 versions & 1 rubygems

Version Path
trackler-2.2.1.139 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.138 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.137 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.136 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.135 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.134 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.133 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.132 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.131 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.130 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.129 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.128 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.127 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.126 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.125 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.124 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.123 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.122 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.121 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.120 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6