Sha256: ffb9581d11381638ebcaf15c9058f6bbd1beb6a4fc613e7a4853ef3e1d0883cb

Contents?: true

Size: 519 Bytes

Versions: 157

Compression:

Stored size: 519 Bytes

Contents

unit class Robot:ver<1>;

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

157 entries across 157 versions & 1 rubygems

Version Path
trackler-2.2.1.15 tracks/perl6/exercises/robot-name/Example.pm6
trackler-2.2.1.14 tracks/perl6/exercises/robot-name/Example.pm6
trackler-2.2.1.13 tracks/perl6/exercises/robot-name/Example.pm6
trackler-2.2.1.12 tracks/perl6/exercises/robot-name/Example.pm6
trackler-2.2.1.11 tracks/perl6/exercises/robot-name/Example.pm6
trackler-2.2.1.10 tracks/perl6/exercises/robot-name/Example.pm6
trackler-2.2.1.9 tracks/perl6/exercises/robot-name/Example.pm6
trackler-2.2.1.8 tracks/perl6/exercises/robot-name/Example.pm6
trackler-2.2.1.7 tracks/perl6/exercises/robot-name/Example.pm6
trackler-2.2.1.6 tracks/perl6/exercises/robot-name/Example.pm6
trackler-2.2.1.5 tracks/perl6/exercises/robot-name/Example.pm6
trackler-2.2.1.4 tracks/perl6/exercises/robot-name/Example.pm6
trackler-2.2.1.3 tracks/perl6/exercises/robot-name/Example.pm6
trackler-2.2.1.2 tracks/perl6/exercises/robot-name/Example.pm6
trackler-2.2.1.1 tracks/perl6/exercises/robot-name/Example.pm6
trackler-2.2.1.0 tracks/perl6/exercises/robot-name/Example.pm6
trackler-2.2.0.6 tracks/perl6/exercises/robot-name/Example.pm6
trackler-2.2.0.5 tracks/perl6/exercises/robot-name/Example.pm6
trackler-2.2.0.4 tracks/perl6/exercises/robot-name/Example.pm6
trackler-2.2.0.3 tracks/perl6/exercises/robot-name/Example.pm6