var records = from record in document.Root.Elements()
let member = record.Element("members").Element("member")
select new
{
Losses = int.Parse(record.Element("losses").Value),
Division = record.Element("division").Value,
Ratio = double.Parse(record.Element("ratio").Value, System.Globalization.CultureInfo.InvariantCulture.NumberFormat),
Points = int.Parse(record.Element("points").Value),
Wins = int.Parse(record.Element("wins").Value),
Player = new
{
Name = member.Element("name").Value,
FavoriteRace = member.Element("fav-race").Value,
CharacterCode = int.Parse(member.Element("character-code").Value),
BattleNetID = int.Parse(member.Element("bnet-id").Value)
}
};
var ladder = from record in records
orderby record.Points descending
select new
{
Player = record.Player.Name,
Points = record.Points,
Wins = record.Wins,
Losses = record.Losses,
Ratio = record.Ratio
};
ladder.Dump();
Spoiler:
un saluto a tutti gli javisti e p(c)accapi-isti :P
02-10-10, 15:03:28
Kemper Boyd
Riferimento: TGM Ladder
Bellino il linq :sisi:
02-10-10, 15:38:41
Kemper Boyd
Riferimento: TGM Ladder
Rilancio con la versione PHP che tiene anche conto della lega nell'ordinamento :D
var records = from record in document.Root.Elements()
let member = record.Element("members").Element("member")
select new
{
Losses = int.Parse(record.Element("losses").Value),
Division = record.Element("division").Value,
Ratio = double.Parse(record.Element("ratio").Value, System.Globalization.CultureInfo.InvariantCulture.NumberFormat),
Points = int.Parse(record.Element("points").Value),
Wins = int.Parse(record.Element("wins").Value), League = leagues[record.Element("league").Value],
Player = new
{
Name = member.Element("name").Value,
FavoriteRace = member.Element("fav-race").Value,
CharacterCode = int.Parse(member.Element("character-code").Value),
BattleNetID = int.Parse(member.Element("bnet-id").Value)
}
};
var ladder = from record in records
orderby record.League descending, record.Points descending
select new
{
Player = record.Player.Name,
Points = record.Points,
Wins = record.Wins,
Losses = record.Losses,
Ratio = record.Ratio,
League = record.League
};
ladder.Dump();
02-10-10, 16:10:34
Kemper Boyd
Riferimento: TGM Ladder
:lol:
Comunque suggerirei JSON (8.5kb) invece che XML (22kb).
02-10-10, 16:21:33
Kralizek
Riferimento: TGM Ladder
Citazione:
Originariamente Scritto da Kemper Boyd
Rilancio con la versione PHP che tiene anche conto della lega nell'ordinamento :D
Comunque suggerirei JSON (8.5kb) invece che XML (22kb).
Per Json devo sbattermi a scrivere le classi e passare il tutto al deserializzatore. Altrimenti, se volessi qualcosa tipo Linq to Xml per Json dovrei rivolgermi a questo progetto OS.
Ad ogni modo, in genere preferisco lavorare: se i dati vengono importati sul server, preferisco usare xml. se è una richiesta dal client, meglio json.
Un po' per i tool, un po' perchè xml è migliore nella comunicazione B2B (business-to-business) per via degli schema e dei namespace che permettono di avere un po' di gioco con i problemi di versioning.
02-10-10, 16:36:26
Kemper Boyd
Riferimento: TGM Ladder
Sisi mi riferivo al caso in questione non in genere, e credevo che linq supportasse nativamente json, quindi bon (stiamo esagerando :asd:)
02-10-10, 17:07:14
Kralizek
Riferimento: TGM Ladder
Citazione:
Originariamente Scritto da Kemper Boyd
Sisi mi riferivo al caso in questione non in genere, e credevo che linq supportasse nativamente json, quindi bon (stiamo esagerando :asd:)
linq supporta tutto e niente. nel senso che di base linq non è che un set di operazioni costruite intorno ad un'interfaccia ( IEnumerable<T> ). Tutto ciò che implementa questa interfaccia è buona da mandare in pasto a Linq.
Ma nel frattempo non abbiamo ancora nulla. Ed in questo viene in aiuto un'altra interfaccia ( IQueryable<T> ) che, per dirla in breve, permette di trasformare una query linq in qualcosa di totalmetne diverso (ad es. LinqToSql e LinqToEntities trasformano una query linq in una query sql).
Spoiler:
cmq ecco qui la versione json :asd:
ho aggiunto anche delle enum, altrimenti il codice è di difficile lettura :P
come vedi ho dovuto creare delle classi che mi permettessero di istruire il serializzatore sul come leggere la stringa json. Laborioso ma efficace e type-safe... quelle cose che noi architetti amiamo insomma =)
WebClient wc = new WebClient();
byte[] json = wc.DownloadData(url);
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Record[]));
MemoryStream ms = new MemoryStream(json);
var records = (Record[])serializer.ReadObject(ms);
var ladder = from record in records
orderby record.League descending, record.Points descending
select record;
ladder.Dump();
}
// Define other methods and classes here
[DataContract(Name = "record")]
public class Record
{
[DataMember(Name = "losses")]
public int Losses { get; set; }
[DataMember(Name = "is_random")]
public bool IsRandom { get; set; }
[DataMember(Name = "division")]
public string Division { get; set; }
[DataMember(Name = "ratio")]
public double Ratio { get; set; }
[DataMember(Name = "division_id")]
public int DivisionID { get; set; }
[DataMember(Name = "bracket")]
public int Bracket { get; set; }
[DataContract]
public enum League : short
{
[EnumMember(Value = "bronze")]
Bronze = 1,
[EnumMember(Value = "silver")]
Silver = 2,
[EnumMember(Value = "gold")]
Gold = 3,
[EnumMember(Value = "platinum")]
Platinum = 4,
[EnumMember(Value = "diamond")]
Diamond = 5
}
[DataContract(Name = "race")]
public enum Race : short
{
[EnumMember(Value = "terran")]
Terran = 1,
[EnumMember(Value = "protoss")]
Protoss = 2,
[EnumMember(Value = "zerg")]
Zerg = 3,
[EnumMember(Value = "random")]
Random = 0
}
[DataContract(Name = "region")]
public enum Region : short
{
[EnumMember(Value = "eu")]
EU = 1
}
02-10-10, 17:16:14
Kurtz
Riferimento: TGM Ladder
osignore fermatevi :asd:
02-10-10, 17:22:57
Kurtz
Riferimento: TGM Ladder
cmq bravo renato, carina come idea
02-10-10, 17:35:29
Spazzy84
Riferimento: TGM Ladder
Voi programmatori siete gente strana.
Per fortuna ho fatto il sistemist... oh wait
02-10-10, 17:37:43
Kurtz
Riferimento: TGM Ladder
ma complimenti al darth che sfiora i 1500 e sopratutto mantiene un ottimo 60% winrate in piena mid diamond :sisi: complimenti.
02-10-10, 17:41:24
Kemper Boyd
Riferimento: TGM Ladder
Citazione:
Originariamente Scritto da Spazzy84
Voi programmatori siete gente strana.
Per fortuna ho fatto il sistemist... oh wait
:asd:
Citazione:
Originariamente Scritto da Kurtz
ma complimenti al darth che sfiora i 1500 e sopratutto mantiene un ottimo 60% winrate in piena mid diamond :sisi: complimenti.
Si davvero, grats darth!
02-10-10, 18:07:57
Spazzy84
Riferimento: TGM Ladder
già già il 60 è una % della madonna :sisi:
Io per tenere il 50 scarso in platinum sto davvero faticando :|
02-10-10, 18:13:09
Kurtz
Riferimento: TGM Ladder
io non sto capendo il sistema, fa fare 5 partite vs platinum / low diamond poi mi sbatte 5 volte contro gente a 1700 e poi torna ai platinum etc etc, continuo a vincere 6 perdere 4 vincere 6 perdere 4 :asd:
poi odio i cheese, ci perdo un sacco di partite e mi incazzo.
02-10-10, 18:18:43
Kemper Boyd
Riferimento: TGM Ladder
Citazione:
Originariamente Scritto da Kurtz
poi odio i cheese, ci perdo un sacco di partite e mi incazzo.
:sisi:
Continuo a ripetermi che sono tutte strategie legittime ecc ecc pero' mi girano le balle ogni volta :asd:
02-10-10, 18:42:02
DagonCultist
Riferimento: TGM Ladder
bellissima :o
02-10-10, 19:00:40
Spazzy84
Riferimento: TGM Ladder
Citazione:
Originariamente Scritto da Kemper Boyd
:sisi:
Continuo a ripetermi che sono tutte strategie legittime ecc ecc pero' mi girano le balle ogni volta :asd:
*
:asd:
specialmente i cheese protoss, quando mi zealotano in base, anche se scoutati non riesco a fermarli :facepalm:
03-10-10, 00:46:05
Kralizek
Riferimento: TGM Ladder
Citazione:
Originariamente Scritto da Spazzy84
*
:asd:
specialmente i cheese protoss, quando mi zealotano in base, anche se scoutati non riesco a fermarli :facepalm:
sei OT!
03-10-10, 08:49:25
Kemper Boyd
Riferimento: TGM Ladder
Infatti! O posti la versione bash o GTFO :sisi:
05-10-10, 11:15:57
Cloverfield
Riferimento: TGM Ladder
nais
05-10-10, 17:46:43
Darth Balrog
Riferimento: TGM Ladder
Citazione:
Originariamente Scritto da Kralizek
...
Con un po' di buona volontà ho preso la lista degli utenti registrati nel topic toppato ed ho creato una custom division per tgm.
Fiko! Grande Kralizek! :rullezza:
Ottimo lavoro. :ok:
Citazione:
Originariamente Scritto da Kurtz
ma complimenti al darth che sfiora i 1500 e sopratutto mantiene un ottimo 60% winrate in piena mid diamond :sisi: complimenti.
Citazione:
Originariamente Scritto da Kemper Boyd
Si davvero, grats darth!
Citazione:
Originariamente Scritto da Spazzy84
già già il 60 è una % della madonna :sisi:
...
Grazie. :D
08-10-10, 09:39:32
mmmegos
Riferimento: TGM Ladder
ehm... nn so come iscrivermi alla ladder...
ok fatto... però non è proprio intuitivo... ;)
09-10-10, 00:17:10
Swuopa
Riferimento: TGM Ladder
perche nn ci sono?
30-11-10, 10:25:44
Kralizek
Riferimento: TGM Ladder
bumpettino che ogni volta me lo devo andare a cercare a pagina 4 :P
30-11-10, 14:22:11
Darth Balrog
Riferimento: TGM Ladder
Citazione:
bumpettino che ogni volta me lo devo andare a cercare a pagina 4
Altrimenti tutto lo sbattimento che ti sei fatto... ^^
30-11-10, 15:28:40
Kurtz
Riferimento: TGM Ladder
bravo darth :sisi:
io sto accumulando un pò di bonus pool, spero di salire di almeno un centinaio di punticini.
30-11-10, 16:41:56
Kralizek
Riferimento: TGM Ladder
visto che i mod non toppano... homo facit fortunam suam!
30-11-10, 16:44:14
Antares
Riferimento: TGM Ladder
Basterebbe editare il topic di Satan con la lista nomi e inserire il link della ladder :look:
30-11-10, 16:51:01
Spazzy84
Riferimento: TGM Ladder
Non mi passa in diamond la merda :|
01-12-10, 18:50:42
Darth Balrog
Riferimento: TGM Ladder
Citazione:
Originariamente Scritto da Spazzy84
Non mi passa in diamond la merda :|
Spazzy, se ti può consolare, secondo me ora richiede più tempo cambiare livello di ladder rispetto ad una volta.
Nel senso che ora la maggior parte dei giocatori di sc2 conosce le tattiche di base (almeno dalla platinum in su) e quindi è più difficile vincere tante partite di seguito rispetto a prima. Inoltre le percentuali di vittoria tendono ad essere sempre più difficili da modificare visto che i numeri di partite giocate cominciano ad essere significativi.