Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
68
Task/100-prisoners/C-sharp/100-prisoners.cs
Normal file
68
Task/100-prisoners/C-sharp/100-prisoners.cs
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
|
||||
namespace Prisoners {
|
||||
class Program {
|
||||
static bool PlayOptimal() {
|
||||
var secrets = Enumerable.Range(0, 100).OrderBy(a => Guid.NewGuid()).ToList();
|
||||
|
||||
for (int p = 0; p < 100; p++) {
|
||||
bool success = false;
|
||||
|
||||
var choice = p;
|
||||
for (int i = 0; i < 50; i++) {
|
||||
if (secrets[choice] == p) {
|
||||
success = true;
|
||||
break;
|
||||
}
|
||||
choice = secrets[choice];
|
||||
}
|
||||
|
||||
if (!success) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool PlayRandom() {
|
||||
var secrets = Enumerable.Range(0, 100).OrderBy(a => Guid.NewGuid()).ToList();
|
||||
|
||||
for (int p = 0; p < 100; p++) {
|
||||
var choices = Enumerable.Range(0, 100).OrderBy(a => Guid.NewGuid()).ToList();
|
||||
|
||||
bool success = false;
|
||||
for (int i = 0; i < 50; i++) {
|
||||
if (choices[i] == p) {
|
||||
success = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!success) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static double Exec(uint n, Func<bool> play) {
|
||||
uint success = 0;
|
||||
for (uint i = 0; i < n; i++) {
|
||||
if (play()) {
|
||||
success++;
|
||||
}
|
||||
}
|
||||
return 100.0 * success / n;
|
||||
}
|
||||
|
||||
static void Main() {
|
||||
const uint N = 1_000_000;
|
||||
Console.WriteLine("# of executions: {0}", N);
|
||||
Console.WriteLine("Optimal play success rate: {0:0.00000000000}%", Exec(N, PlayOptimal));
|
||||
Console.WriteLine(" Random play success rate: {0:0.00000000000}%", Exec(N, PlayRandom));
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue