Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
103
Task/Penneys-game/C-sharp/penneys-game.cs
Normal file
103
Task/Penneys-game/C-sharp/penneys-game.cs
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
using static System.Console;
|
||||
using static System.Threading.Thread;
|
||||
using System;
|
||||
|
||||
public static class PenneysGame
|
||||
{
|
||||
const int pause = 500;
|
||||
const int N = 3;
|
||||
static Random rng = new Random();
|
||||
|
||||
static int Toss() => rng.Next(2);
|
||||
|
||||
static string AsString(this int sequence) {
|
||||
string s = "";
|
||||
for (int b = 0b100; b > 0; b >>= 1) {
|
||||
s += (sequence & b) > 0 ? 'T' : 'H';
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
static int UserInput() {
|
||||
while (true) {
|
||||
switch (ReadKey().Key) {
|
||||
case ConsoleKey.Escape: return -1;
|
||||
case ConsoleKey.H: return 0;
|
||||
case ConsoleKey.T: return 1;
|
||||
}
|
||||
Console.Write('\b');
|
||||
}
|
||||
}
|
||||
|
||||
public static void Main2() {
|
||||
int yourScore = 0, myScore = 0;
|
||||
while (true) {
|
||||
WriteLine($"Your score: {yourScore}, My score: {myScore}");
|
||||
WriteLine("Determining who goes first...");
|
||||
Sleep(pause);
|
||||
bool youStart = Toss() == 1;
|
||||
WriteLine(youStart ? "You go first." : "I go first.");
|
||||
int yourSequence = 0, mySequence = 0;
|
||||
if (youStart) {
|
||||
WriteLine("Choose your sequence of (H)eads and (T)ails (or press Esc to exit)");
|
||||
int userChoice;
|
||||
for (int i = 0; i < N; i++) {
|
||||
if ((userChoice = UserInput()) < 0) return;
|
||||
yourSequence = (yourSequence << 1) + userChoice;
|
||||
}
|
||||
mySequence = ((~yourSequence << 1) & 0b100) | (yourSequence >> 1);
|
||||
} else {
|
||||
for (int i = 0; i < N; i++) {
|
||||
mySequence = (mySequence << 1) + Toss();
|
||||
}
|
||||
|
||||
WriteLine("I chose " + mySequence.AsString());
|
||||
do {
|
||||
WriteLine("Choose your sequence of (H)eads and (T)ails (or press Esc to exit)");
|
||||
int choice;
|
||||
yourSequence = 0;
|
||||
for (int i = 0; i < N; i++) {
|
||||
if ((choice = UserInput()) < 0) return;
|
||||
yourSequence = (yourSequence << 1) + choice;
|
||||
}
|
||||
if (yourSequence == mySequence) {
|
||||
WriteLine();
|
||||
WriteLine("You cannot choose the same sequence.");
|
||||
}
|
||||
} while (yourSequence == mySequence);
|
||||
}
|
||||
|
||||
WriteLine();
|
||||
WriteLine($"Your sequence: {yourSequence.AsString()}, My sequence: {mySequence.AsString()}");
|
||||
WriteLine("Tossing...");
|
||||
int sequence = 0;
|
||||
for (int i = 0; i < N; i++) {
|
||||
Sleep(pause);
|
||||
int toss = Toss();
|
||||
sequence = (sequence << 1) + toss;
|
||||
Write(toss > 0 ? 'T' : 'H');
|
||||
}
|
||||
while (true) {
|
||||
if (sequence == yourSequence) {
|
||||
WriteLine();
|
||||
WriteLine("You win!");
|
||||
yourScore++;
|
||||
break;
|
||||
} else if (sequence == mySequence) {
|
||||
WriteLine();
|
||||
WriteLine("I win!");
|
||||
myScore++;
|
||||
break;
|
||||
}
|
||||
Sleep(pause);
|
||||
int toss = Toss();
|
||||
sequence = ((sequence << 1) + toss) & 0b111;
|
||||
Write(toss > 0 ? 'T' : 'H');
|
||||
}
|
||||
WriteLine("Press a key.");
|
||||
ReadKey();
|
||||
Clear();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue