Sha256: c9940801501ec192ec821bdc5534dfb1e93f9e654b9014b1b8d69940a107d21e

Contents?: true

Size: 1.66 KB

Versions: 127

Compression:

Stored size: 1.66 KB

Contents

unit uAllergies;

interface
uses System.Generics.Collections;

type
   IAllergies = interface(IInvokable)
   ['{0A1F6B96-4CDC-4D7C-BE50-6B466CA27EB0}']
     function GetAllergyList: TList<string>;
     function AllergicTo(allergy: string): Boolean;
     property IList: TList<string> read GetAllergyList;
   end;

   TAllergies = class(TInterfacedObject, IAllergies)
   private
     fScore: integer;
     fAvailableAllergies: TDictionary<string, integer>;
     fAllergyList: TList<string>;
     function IsInAllergyScore(allergyvalue: integer): Boolean;
     function GetAllergyList: TList<string>;
   public
     constructor create(aScore: integer);
     function AllergicTo(allergy: string): Boolean;
     property IList: TList<string> read GetAllergyList;
   end;

implementation

constructor TAllergies.create(aScore: Integer);
begin
  fScore := aScore;
  fAvailableAllergies := TDictionary<string, integer>.create;
  with fAvailableAllergies do
  begin
    Add('eggs', 1);
    Add('peanuts', 2);
    Add('shellfish', 4);
    Add('strawberries', 8);
    Add('tomatoes', 16);
    Add('chocolate', 32);
    Add('pollen', 64);
    Add('cats', 128);
  end; //with
end;

function TAllergies.IsInAllergyScore(allergyvalue: Integer): Boolean;
begin
  result := (fScore and allergyvalue) = allergyvalue;
end;

function TAllergies.GetAllergyList: TList<string>;
var aPair: TPair<string, integer>;
begin
   result := TList<string>.create;
   for aPair in fAvailableAllergies do
   begin
     if IsInAllergyScore(aPair.Value) then
       result.Add(aPair.Key);
   end;
end;

function TAllergies.AllergicTo(allergy: string): Boolean;
begin
  result := IsInAllergyScore(fAvailableAllergies[allergy]);
end;

end.

Version data entries

127 entries across 127 versions & 1 rubygems

Version Path
trackler-2.1.0.21 tracks/delphi/exercises/allergies/uAllergiesExample.pas
trackler-2.1.0.20 tracks/delphi/exercises/allergies/uAllergiesExample.pas
trackler-2.1.0.19 tracks/delphi/exercises/allergies/uAllergiesExample.pas
trackler-2.1.0.18 tracks/delphi/exercises/allergies/uAllergiesExample.pas
trackler-2.1.0.17 tracks/delphi/exercises/allergies/uAllergiesExample.pas
trackler-2.1.0.16 tracks/delphi/exercises/allergies/uAllergiesExample.pas
trackler-2.1.0.15 tracks/delphi/exercises/allergies/uAllergiesExample.pas
trackler-2.1.0.14 tracks/delphi/exercises/allergies/uAllergiesExample.pas
trackler-2.1.0.13 tracks/delphi/exercises/allergies/uAllergiesExample.pas
trackler-2.1.0.12 tracks/delphi/exercises/allergies/uAllergiesExample.pas
trackler-2.1.0.11 tracks/delphi/exercises/allergies/uAllergiesExample.pas
trackler-2.1.0.10 tracks/delphi/exercises/allergies/uAllergiesExample.pas
trackler-2.1.0.9 tracks/delphi/exercises/allergies/uAllergiesExample.pas
trackler-2.1.0.8 tracks/delphi/exercises/allergies/uAllergiesExample.pas
trackler-2.1.0.7 tracks/delphi/exercises/allergies/uAllergiesExample.pas
trackler-2.1.0.6 tracks/delphi/exercises/allergies/uAllergiesExample.pas
trackler-2.1.0.5 tracks/delphi/exercises/allergies/uAllergiesExample.pas
trackler-2.1.0.4 tracks/delphi/exercises/allergies/uAllergiesExample.pas
trackler-2.1.0.3 tracks/delphi/exercises/allergies/uAllergiesExample.pas
trackler-2.1.0.2 tracks/delphi/exercises/allergies/uAllergiesExample.pas