thashset_exceptwith.lpr 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // Generic types for NewPascal.org and FPC!
  2. // by Maciej Izak (hnb), 2018
  3. // sponsored by Sphere 10 Software (http://sphere10.com)
  4. program thashset_exceptwith;
  5. {$MODE DELPHI}
  6. {$APPTYPE CONSOLE}
  7. uses
  8. SysUtils, Generics.Collections;
  9. function SetToStr(ASet: THashSet<Integer>): string;
  10. var
  11. i: Integer;
  12. begin
  13. Result := '(';
  14. for i in ASet do
  15. Result := Result + ' ' + IntToStr(i);
  16. Result := Result + ' )';
  17. end;
  18. procedure WriteLnHashSet(const AName: string; AHashSet: THashSet<Integer>);
  19. begin
  20. WriteLn(Format('%0:s.Count = %1:d %0:s = %2:s', [AName, AHashSet.Count, SetToStr(AHashSet)]));
  21. end;
  22. var
  23. LowNumbers: THashSet<Integer>;
  24. HighNumbers: THashSet<Integer>;
  25. i: Integer;
  26. begin
  27. LowNumbers := THashSet<Integer>.Create;
  28. HighNumbers := THashSet<Integer>.Create;
  29. for i := 0 to 5 do
  30. LowNumbers.Add(i);
  31. for i := 3 to 9 do
  32. HighNumbers.Add(i);
  33. WriteLnHashSet('LowNumbers', LowNumbers);
  34. WriteLnHashSet('HighNumbers', HighNumbers);
  35. WriteLn('< HighNumbers ExceptWith LowNumbers >');
  36. HighNumbers.ExceptWith(LowNumbers);
  37. WriteLnHashSet('HighNumbers', HighNumbers);
  38. HighNumbers.Free;
  39. LowNumbers.Free;
  40. ReadLn;
  41. end.