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.159 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.158 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.157 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.156 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.155 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.154 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.153 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.152 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.151 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.150 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.149 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.148 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.147 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.146 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.145 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.144 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.143 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.142 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.141 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6
trackler-2.2.1.140 tracks/perl6/exercises/robot-name/.meta/solutions/Robot.pm6