using System;
public class DiceOnYacht
{
public enum Category
{
Ones, Twos, Threes, Fours, Fives, Sixes, Sevens, Eights,
SmallStraight,
AllDifferent,
AllSame
}
private static byte numdie = 5; // number of die in game
// must be in the range [2, 16] in order for
// all methods to be valid
private bool isInSequence ( byte [] arr, byte a, byte b )
{
// Returns true if the values in the array arr
// in the range of indexes [a, b] are in sequence.
// Returns false otherwise
while (a <= b)
{
if ((arr[a] + 1) == arr[a+1])
++a;
else
return false;
}
return true;
}
private bool isSmallStraight ( byte [numdie] die )
{
// Returns true if die can be arranged to form a sequence
// of length numdie-1
Array.Sort(die);
return isInSequence(die,0,numdie-2) || isInSequence(die,1,numdie-1);
}
private byte getSinglesScores ( Category cat, byte [numdie] die )
{
// cat: one of Ones, Twos, Threes, Fours, Fives, Sixes, Sevens, Eights
// die: array numbers rolled on the die, e.g. [1, 2, 1, 3, 8]
byte score = 0;
byte catAsByte = (byte)cat;
foreach ( byte dice in arr ) if (dice == catAsByte) score += catAsByte;
return score;
}
public byte getAnyScore ( Category cat, byte [numdie] die )
{
byte score;
switch (cat)
{
case Category.Ones:
case Category.Twos:
case Category.Threes:
case Category.Fours:
case Category.Fives:
case Category.Sixes:
case Category.Sevens:
case Category.Eights:
score = getSinglesScores(cat,die);
break;
case Category.SmallStraight:
score = isSmallStraight(die) ? 30 : 0;
break;
case Category.AllDifferent:
score = die.Distinct().Count() == 5 ? 40 : 0;
break;
case Category.AllSame:
score = die.Distinct.Count() == 1 ? 50 : 0;
break;
}
return score;
}
public Category getSuggestion ( byte [numdie] die )
{
Category topcat; byte topscore = 0;
// ...
return topcat;
}
public static void Main()
{
Console.WriteLine("hehe");
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIERpY2VPbllhY2h0CnsKCXB1YmxpYyBlbnVtIENhdGVnb3J5Cgl7CgkJT25lcywgVHdvcywgVGhyZWVzLCBGb3VycywgRml2ZXMsIFNpeGVzLCBTZXZlbnMsIEVpZ2h0cywKCQlTbWFsbFN0cmFpZ2h0LCAKCQlBbGxEaWZmZXJlbnQsIAoJCUFsbFNhbWUJCgl9CgkKCXByaXZhdGUgc3RhdGljIGJ5dGUgbnVtZGllID0gNTsgLy8gbnVtYmVyIG9mIGRpZSBpbiBnYW1lCgkJCQkJCQkJCS8vIG11c3QgYmUgaW4gdGhlIHJhbmdlIFsyLCAxNl0gaW4gb3JkZXIgZm9yCgkJCQkJCQkJCS8vIGFsbCBtZXRob2RzIHRvIGJlIHZhbGlkCgkJCQkJCQkJCgkKCXByaXZhdGUgYm9vbCBpc0luU2VxdWVuY2UgKCBieXRlIFtdIGFyciwgYnl0ZSBhLCBieXRlIGIgKQoJewoJCS8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBhcnJheSBhcnIgCgkJLy8gaW4gdGhlIHJhbmdlIG9mIGluZGV4ZXMgW2EsIGJdIGFyZSBpbiBzZXF1ZW5jZS4KCQkvLyBSZXR1cm5zIGZhbHNlIG90aGVyd2lzZQoJCXdoaWxlIChhIDw9IGIpIAoJCXsKCQkJaWYgKChhcnJbYV0gKyAxKSA9PSBhcnJbYSsxXSkgCgkJCQkrK2E7CgkJCWVsc2UKCQkJCXJldHVybiBmYWxzZTsKCQl9CgkJcmV0dXJuIHRydWU7Cgl9CgkKCXByaXZhdGUgYm9vbCBpc1NtYWxsU3RyYWlnaHQgKCBieXRlIFtudW1kaWVdIGRpZSApCgl7CgkJLy8gUmV0dXJucyB0cnVlIGlmIGRpZSBjYW4gYmUgYXJyYW5nZWQgdG8gZm9ybSBhIHNlcXVlbmNlCgkJLy8gb2YgbGVuZ3RoIG51bWRpZS0xCgkJQXJyYXkuU29ydChkaWUpOwoJCXJldHVybiBpc0luU2VxdWVuY2UoZGllLDAsbnVtZGllLTIpIHx8IGlzSW5TZXF1ZW5jZShkaWUsMSxudW1kaWUtMSk7Cgl9CgkKCXByaXZhdGUgYnl0ZSBnZXRTaW5nbGVzU2NvcmVzICggQ2F0ZWdvcnkgY2F0LCBieXRlIFtudW1kaWVdIGRpZSApCgl7CgkJLy8gIGNhdDogb25lIG9mIE9uZXMsIFR3b3MsIFRocmVlcywgRm91cnMsIEZpdmVzLCBTaXhlcywgU2V2ZW5zLCBFaWdodHMKCQkvLyAgZGllOiBhcnJheSBudW1iZXJzIHJvbGxlZCBvbiB0aGUgZGllLCBlLmcuIFsxLCAyLCAxLCAzLCA4XQoJCWJ5dGUgc2NvcmUgPSAwOwoJCWJ5dGUgY2F0QXNCeXRlID0gKGJ5dGUpY2F0OwoJCWZvcmVhY2ggKCBieXRlIGRpY2UgaW4gYXJyICkgaWYgKGRpY2UgPT0gY2F0QXNCeXRlKSBzY29yZSArPSBjYXRBc0J5dGU7CgkJcmV0dXJuIHNjb3JlOwoJfQoJCglwdWJsaWMgYnl0ZSBnZXRBbnlTY29yZSAoIENhdGVnb3J5IGNhdCwgYnl0ZSBbbnVtZGllXSBkaWUgKQoJewoJCWJ5dGUgc2NvcmU7IAoJCXN3aXRjaCAoY2F0KQoJCXsKCQkJY2FzZSBDYXRlZ29yeS5PbmVzOiAKCQkJY2FzZSBDYXRlZ29yeS5Ud29zOgoJCQljYXNlIENhdGVnb3J5LlRocmVlczoKCQkJY2FzZSBDYXRlZ29yeS5Gb3VyczoKCQkJY2FzZSBDYXRlZ29yeS5GaXZlczoKCQkJY2FzZSBDYXRlZ29yeS5TaXhlczoKCQkJY2FzZSBDYXRlZ29yeS5TZXZlbnM6CgkJCWNhc2UgQ2F0ZWdvcnkuRWlnaHRzOgoJCQkJc2NvcmUgPSBnZXRTaW5nbGVzU2NvcmVzKGNhdCxkaWUpOwoJCQkJYnJlYWs7CgkJCWNhc2UgQ2F0ZWdvcnkuU21hbGxTdHJhaWdodDoKCQkJCXNjb3JlID0gaXNTbWFsbFN0cmFpZ2h0KGRpZSkgPyAzMCA6IDA7CgkJCQlicmVhazsKCQkJY2FzZSBDYXRlZ29yeS5BbGxEaWZmZXJlbnQ6CgkJCQlzY29yZSA9IGRpZS5EaXN0aW5jdCgpLkNvdW50KCkgPT0gNSA/IDQwIDogMDsKCQkJCWJyZWFrOwoJCQljYXNlIENhdGVnb3J5LkFsbFNhbWU6CgkJCQlzY29yZSA9IGRpZS5EaXN0aW5jdC5Db3VudCgpID09IDEgPyA1MCA6IDA7CgkJCQlicmVhazsKCQl9CgkJcmV0dXJuIHNjb3JlOwoJfQoJCglwdWJsaWMgQ2F0ZWdvcnkgZ2V0U3VnZ2VzdGlvbiAoIGJ5dGUgW251bWRpZV0gZGllICkKCXsKCQlDYXRlZ29yeSB0b3BjYXQ7IGJ5dGUgdG9wc2NvcmUgPSAwOwoJCS8vIC4uLgoJCXJldHVybiB0b3BjYXQ7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQlDb25zb2xlLldyaXRlTGluZSgiaGVoZSIpOwoJfQp9
prog.cs(33,38): error CS1525: Unexpected symbol `numdie', expecting `,' or `]'
prog.cs(41,53): error CS1525: Unexpected symbol `numdie', expecting `,' or `]'
prog.cs(51,47): error CS1525: Unexpected symbol `numdie', expecting `,' or `]'
prog.cs(79,39): error CS1525: Unexpected symbol `numdie', expecting `,' or `]'
Compilation failed: 4 error(s), 0 warnings