<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Random team scheduler in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Random-team-scheduler/m-p/536969#M147622</link>
    <description>&lt;P&gt;I would like to create a random schedule for x number of players, from multiple teams, with many different abilities, and possibly other attributes.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also the previous matches should be taken into account so that there are no repeat matches from previous matches.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Player profiles (Have):&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Name&lt;/TD&gt;&lt;TD&gt;Team&lt;/TD&gt;&lt;TD&gt;Ability&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player1&lt;/TD&gt;&lt;TD&gt;Team1&lt;/TD&gt;&lt;TD&gt;Level1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player2&lt;/TD&gt;&lt;TD&gt;Team1&lt;/TD&gt;&lt;TD&gt;Level1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player3&lt;/TD&gt;&lt;TD&gt;Team1&lt;/TD&gt;&lt;TD&gt;Level1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player4&lt;/TD&gt;&lt;TD&gt;Team1&lt;/TD&gt;&lt;TD&gt;Level1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player5&lt;/TD&gt;&lt;TD&gt;Team1&lt;/TD&gt;&lt;TD&gt;Level2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player6&lt;/TD&gt;&lt;TD&gt;Team1&lt;/TD&gt;&lt;TD&gt;Level2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player7&lt;/TD&gt;&lt;TD&gt;Team1&lt;/TD&gt;&lt;TD&gt;Level2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player8&lt;/TD&gt;&lt;TD&gt;Team1&lt;/TD&gt;&lt;TD&gt;Level2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player9&lt;/TD&gt;&lt;TD&gt;Team2&lt;/TD&gt;&lt;TD&gt;Level1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player10&lt;/TD&gt;&lt;TD&gt;Team2&lt;/TD&gt;&lt;TD&gt;Level1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player11&lt;/TD&gt;&lt;TD&gt;Team2&lt;/TD&gt;&lt;TD&gt;Level1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player12&lt;/TD&gt;&lt;TD&gt;Team2&lt;/TD&gt;&lt;TD&gt;Level1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player13&lt;/TD&gt;&lt;TD&gt;Team2&lt;/TD&gt;&lt;TD&gt;Level2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player14&lt;/TD&gt;&lt;TD&gt;Team2&lt;/TD&gt;&lt;TD&gt;Level2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player15&lt;/TD&gt;&lt;TD&gt;Team2&lt;/TD&gt;&lt;TD&gt;Level2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player16&lt;/TD&gt;&lt;TD&gt;Team2&lt;/TD&gt;&lt;TD&gt;Level2&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Previous Matches (Have2):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Player1 vs Player9&lt;/P&gt;&lt;P&gt;Player2 vs Player10&lt;/P&gt;&lt;P&gt;Player3 vs Player11&lt;/P&gt;&lt;P&gt;Player4 vs Player12&lt;/P&gt;&lt;P&gt;Player5 vs Player13&lt;/P&gt;&lt;P&gt;Player6 vs&amp;nbsp; Player14&lt;/P&gt;&lt;P&gt;Player7 vs Player15&lt;/P&gt;&lt;P&gt;Player8 vs Player16&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Want:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Random output of matches.&amp;nbsp; For example:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Player1 vs Player10&lt;/P&gt;&lt;P&gt;Player2 vs Player11&lt;/P&gt;&lt;P&gt;etc&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help is truly appreciated&lt;/P&gt;</description>
    <pubDate>Wed, 20 Feb 2019 05:32:00 GMT</pubDate>
    <dc:creator>hypart</dc:creator>
    <dc:date>2019-02-20T05:32:00Z</dc:date>
    <item>
      <title>Random team scheduler</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Random-team-scheduler/m-p/536969#M147622</link>
      <description>&lt;P&gt;I would like to create a random schedule for x number of players, from multiple teams, with many different abilities, and possibly other attributes.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also the previous matches should be taken into account so that there are no repeat matches from previous matches.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Player profiles (Have):&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Name&lt;/TD&gt;&lt;TD&gt;Team&lt;/TD&gt;&lt;TD&gt;Ability&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player1&lt;/TD&gt;&lt;TD&gt;Team1&lt;/TD&gt;&lt;TD&gt;Level1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player2&lt;/TD&gt;&lt;TD&gt;Team1&lt;/TD&gt;&lt;TD&gt;Level1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player3&lt;/TD&gt;&lt;TD&gt;Team1&lt;/TD&gt;&lt;TD&gt;Level1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player4&lt;/TD&gt;&lt;TD&gt;Team1&lt;/TD&gt;&lt;TD&gt;Level1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player5&lt;/TD&gt;&lt;TD&gt;Team1&lt;/TD&gt;&lt;TD&gt;Level2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player6&lt;/TD&gt;&lt;TD&gt;Team1&lt;/TD&gt;&lt;TD&gt;Level2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player7&lt;/TD&gt;&lt;TD&gt;Team1&lt;/TD&gt;&lt;TD&gt;Level2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player8&lt;/TD&gt;&lt;TD&gt;Team1&lt;/TD&gt;&lt;TD&gt;Level2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player9&lt;/TD&gt;&lt;TD&gt;Team2&lt;/TD&gt;&lt;TD&gt;Level1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player10&lt;/TD&gt;&lt;TD&gt;Team2&lt;/TD&gt;&lt;TD&gt;Level1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player11&lt;/TD&gt;&lt;TD&gt;Team2&lt;/TD&gt;&lt;TD&gt;Level1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player12&lt;/TD&gt;&lt;TD&gt;Team2&lt;/TD&gt;&lt;TD&gt;Level1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player13&lt;/TD&gt;&lt;TD&gt;Team2&lt;/TD&gt;&lt;TD&gt;Level2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player14&lt;/TD&gt;&lt;TD&gt;Team2&lt;/TD&gt;&lt;TD&gt;Level2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player15&lt;/TD&gt;&lt;TD&gt;Team2&lt;/TD&gt;&lt;TD&gt;Level2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Player16&lt;/TD&gt;&lt;TD&gt;Team2&lt;/TD&gt;&lt;TD&gt;Level2&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Previous Matches (Have2):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Player1 vs Player9&lt;/P&gt;&lt;P&gt;Player2 vs Player10&lt;/P&gt;&lt;P&gt;Player3 vs Player11&lt;/P&gt;&lt;P&gt;Player4 vs Player12&lt;/P&gt;&lt;P&gt;Player5 vs Player13&lt;/P&gt;&lt;P&gt;Player6 vs&amp;nbsp; Player14&lt;/P&gt;&lt;P&gt;Player7 vs Player15&lt;/P&gt;&lt;P&gt;Player8 vs Player16&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Want:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Random output of matches.&amp;nbsp; For example:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Player1 vs Player10&lt;/P&gt;&lt;P&gt;Player2 vs Player11&lt;/P&gt;&lt;P&gt;etc&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help is truly appreciated&lt;/P&gt;</description>
      <pubDate>Wed, 20 Feb 2019 05:32:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Random-team-scheduler/m-p/536969#M147622</guid>
      <dc:creator>hypart</dc:creator>
      <dc:date>2019-02-20T05:32:00Z</dc:date>
    </item>
    <item>
      <title>Re: Random team scheduler</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Random-team-scheduler/m-p/536972#M147624</link>
      <description>&lt;P&gt;1) Create a list of all possible pairs (self join, cartesian product)&lt;/P&gt;
&lt;P&gt;2) Remove pairs from previous matches&lt;/P&gt;
&lt;P&gt;3) Pick random pairs from remaining set&lt;/P&gt;</description>
      <pubDate>Wed, 20 Feb 2019 06:06:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Random-team-scheduler/m-p/536972#M147624</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2019-02-20T06:06:37Z</dc:date>
    </item>
    <item>
      <title>Re: Random team scheduler</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Random-team-scheduler/m-p/537020#M147633</link>
      <description>&lt;P&gt;Not 100% sure but what Proc Plan provides would eventually also be worth investigating.&lt;/P&gt;</description>
      <pubDate>Wed, 20 Feb 2019 09:50:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Random-team-scheduler/m-p/537020#M147633</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2019-02-20T09:50:29Z</dc:date>
    </item>
    <item>
      <title>Re: Random team scheduler</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Random-team-scheduler/m-p/537036#M147636</link>
      <description>&lt;P&gt;Code:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data players;
input Name $	Team $	Ability $;
cards;
Player1	Team1	Level1
Player2	Team1	Level1
Player3	Team1	Level1
Player4	Team1	Level1
Player5	Team1	Level2
Player6	Team1	Level2
Player7	Team1	Level2
Player8	Team1	Level2
Player9	Team2	Level1
Player10	Team2	Level1
Player11	Team2	Level1
Player12	Team2	Level1
Player13	Team2	Level2
Player14	Team2	Level2
Player15	Team2	Level2
Player16	Team2	Level2
;
run;

data matches;
input Pl1 $ Pl2$;
cards; 
Player1 Player9
Player2 Player10
Player3 Player11
Player4 Player12
Player5 Player13
Player6 Player14
Player7 Player15
Player8 Player16
;
run;

proc sql;
create table possible_matches as
select a.Name as Pl1, b.Name as Pl2/*, a.Team as Pl1Team, b.Team as Pl2Team, a.Ability as Pl1Ability, b.Ability as Pl2Ability*/
from players (where=( Team='Team1')) a, players (where =(Team='Team2')) b
except
select Pl1, Pl2 from matches;
quit;

data possible_matches;
set possible_matches;
fred = ranuni(0);
run;

proc sort data=possible_matches;
by Pl1 fred;
run;

data next_match(drop=fred Pl2_exustive_lst f);
length Pl2_exustive_lst $30000;
set possible_matches;
retain Pl2_exustive_lst f;
by Pl1 fred;
if first.Pl1 then do;
	f=1;
	if f=1 and findw(Pl2_exustive_lst,Pl2) =0 then do;
		Pl2_exustive_lst=cats(strip(Pl2_exustive_lst)||' , '||Pl2);
		f=0;
		output;
	end;
end;
if f=1 and findw(Pl2_exustive_lst,Pl2) =0 then do;
	Pl2_exustive_lst=cats(strip(Pl2_exustive_lst)||' , '||Pl2);
	f=0;
	output;
end;
run;

/*
data matches;
set matches next_match;
run;
*/&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Please let us know if it worked.&lt;/P&gt;</description>
      <pubDate>Wed, 20 Feb 2019 11:02:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Random-team-scheduler/m-p/537036#M147636</guid>
      <dc:creator>Satish_Parida</dc:creator>
      <dc:date>2019-02-20T11:02:59Z</dc:date>
    </item>
    <item>
      <title>Re: Random team scheduler</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Random-team-scheduler/m-p/537077#M147646</link>
      <description>&lt;P&gt;Thanks Satish.&amp;nbsp; The Ability though is not taken into consideration.&amp;nbsp; How do I add Ability into the where statement:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;select a.Name as Pl1, b.Name as Pl2, a.Team as Pl1Team, b.Team as Pl2Team, a.Ability as Pl1Ability, b.Ability as Pl2Ability&lt;BR /&gt;from players (where=( Team='Team1')) a, players (where =(Team='Team2')) b&lt;/P&gt;</description>
      <pubDate>Wed, 20 Feb 2019 13:42:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Random-team-scheduler/m-p/537077#M147646</guid>
      <dc:creator>hypart</dc:creator>
      <dc:date>2019-02-20T13:42:13Z</dc:date>
    </item>
    <item>
      <title>Re: Random team scheduler</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Random-team-scheduler/m-p/537079#M147647</link>
      <description>&lt;P&gt;It should be fairly simple to Customize this code to your need.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;e.g:&lt;/P&gt;&lt;P&gt;If you want next Matches to be only higher/Lower skilled players.&amp;nbsp; -You can add a where clause in that join statement.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please mark the Post as result if your issue is solved.&lt;/P&gt;</description>
      <pubDate>Wed, 20 Feb 2019 14:03:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Random-team-scheduler/m-p/537079#M147647</guid>
      <dc:creator>Satish_Parida</dc:creator>
      <dc:date>2019-02-20T14:03:32Z</dc:date>
    </item>
  </channel>
</rss>

